RSpec2 错误代码测试

Posted

技术标签:

【中文标题】RSpec2 错误代码测试【英文标题】:RSpec2 error codes testing 【发布时间】:2013-07-20 11:22:19 【问题描述】:

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

 response.status.should == 404

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

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

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

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

【问题讨论】:

遇到同样的问题!我需要跳过/绕过至少一个异常以查看返回的内容(例如 404、400 等) 【参考方案1】:

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

config.consider_all_requests_local = false
config.action_dispatch.show_exceptions = true

【讨论】:

我正在检查其他少数情况下的异常,即使基于每个测试用例抛出异常,是否有办法抑制失败?【参考方案2】:

我不确定我是否足够了解细节以知道这是否会对您有所帮助,但请查看bypass_rescue,如https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/bypass-rescue 所述。

【讨论】:

以上是关于RSpec2 错误代码测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 capybara 进行 rspec2 验收测试

ruby 1.9 和 RSpec2 有啥好的突变测试工具吗?

rspec 3 - 存根类方法

汽车加油问题出现一些错误。它适用于大多数测试用例,但不适用于所有测试用例。你能告诉我为啥这段代码是错误的

在 UI 测试期间未能阻止系统休眠。错误代码:-536870211

为啥我的班级用错误代码 138 使我的 OCUnit 测试用例崩溃?