我有这样的代码:
shared_examples "admin common actions" do |resource|
describe "logged admin" do
login_admin
describe 'GET #index' do
it 'responds with 200' do
get :index, :format => :html
expect(response).to have_http_status(200)
end
end
end
end
所以我期待的是,如果我的视图有一些错误,并且没有渲染测试应该失败,导致服务器将返回500。在我的例子中,当视图没有被呈现时,测试通过。我检查了网址,没问题。那么我做错了什么呢?
发布于 2016-12-02 19:37:36
问题是,在运行控制器测试时,rspec在默认情况下并不实际呈现视图,这是为了将控制器操作的单元测试与呈现视图隔离。理想情况下,视图的渲染应该是视图规范的关注点。
然而,如果你真的想在你的控制器中测试它,你可以告诉rspec渲染视图。这不会生成内部web服务器500状态代码,它会抛出异常,因此您可以通过测试没有引发异常来确保它正确呈现视图,而不是测试状态500。
shared_examples "admin common actions" do |resource|
describe "logged admin" do
login_admin
describe 'GET #index' do
it 'responds with 200' do
get :index, :format => :html
expect(response).to have_http_status(200)
end
context 'when rendering view' do
render_views
it 'renders the view' do
expect { get :index, :format => :html }.to_not raise_error
end
end
end
end
end
https://stackoverflow.com/questions/40938852
复制