4

我对测试错误代码有疑问。如果未找到记录,则会引发异常 ActiveRecord::RecordNotFound。问题是,我想检查是否返回了 404。如果我继续检查:

 response.status.should == 404

然后这将使测试用例失败,因为 RecordNotFound 异常被抛出并且未被捕获。如果我继续说

expect {<call controller action>}.to raise_error(ActiveRecord::RecordNotFound) 

然后检查状态码,然后它会再次失败,因为它会捕获异常并且响应码是 200。

在这种情况下,我应该如何测试是否返回 404?

4

2 回答 2

0

我不确定我是否足够了解细节以知道这是否会对您有所帮助,但请bypass_rescue按照https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/bypass-rescue中的说明进行检查.

于 2013-07-20T15:10:38.293 回答
0

如果您不想检查其他示例中的异常,您可以在 中设置以下选项config/environments/test.rb

config.consider_all_requests_local = false
config.action_dispatch.show_exceptions = true
于 2013-07-20T11:40:52.873 回答