Shared Contexts
Shared context allows for extracting certain setup steps and sharing them across several different sets of tests.First, define your shared context:
RSpec.shared_context "user setup" do
let(:user) { User.new(name: 'Chuck Norris') }
before { allow(user).to receive(:some_method) }
end
Then, include it in your spec files:
describe UsersController do
include_context 'user setup'
# Tests go here...
end
Anonymous Controllers
Anonymous controllers are a way to specify certain behavior for the controller you are trying to test, or more likely for a parent controller. The thing I found it most useful for, and not coincidentally the thing that the docs says it is useful for, is testing global error handling.
describe UsersController do
controller do
def index
raise AccessDenied
end
end
subject { get :index }
describe "handling AccessDenied exceptions" do
it "redirects to the /401.html page" do
expect(subject).to redirect_to("/401.html")
end
end
end
No comments:
Post a Comment