我使用capybara来运行我的rspec功能。问题是当运行规范时在rails堆栈中发生错误时,错误不会通过"到rspec并导致测试失败。 rspec生成并检查错误页面。
所以,我的规格错误,我不会立即失败。我只是在查找内容时遇到错误,或者尝试填写一个不会出现在错误页面上的字段。
这不是我想要的。我希望在rails堆栈中遇到错误(控制器,视图等)导致rspec立即失败。
我该如何解决这个问题?
答案 0 :(得分:2)
Capybara能够将服务器错误提升为测试失败,只要它正确地挂钩到Rails(参见:the last bullet point on the "Gotchas" section of the README)。
请确保你:
require 'capybara/rails'
或spec_helper.rb
档案中<{1}} rails_helper.rb
错误,visit 'http://localhost:3000/mypage
是对的)。如果以上都是真的,并且您仍然看到了这种行为,那么您的设置可能还有其他问题。尝试将驱动程序更改回默认值(Rack :: Test)并查看问题是否仍然存在。
编辑:正如下面的评论中所解释的,这里的问题是visit '/mypage'
gem正在测试环境中加载,它在Capybara和Rspec有机会看到之前挽救了错误并显示了漂亮的错误页面错误。将其移动到Gemfile中的better_errors
- 仅限组可解决此问题。 This thread得到了答案。
答案 1 :(得分:1)
为您的控制器/视图创建一个测试用例,并在进行任何集成测试之前对其进行测试。
这是正确的方法:
答案 2 :(得分:0)
您可以使用以下capybara
方法强制方案失败。
fail(msg = "Error. Check log for details.")