对一些capybara webkit-driver(:js => true
)测试有点奇怪。
当测试运行时,测试运行正常,但不知何故,它们会失败。
例如,我有一个类似于
的请求测试describe "A", :js => true do
# tests here run fine
end
describe "B", :js => true do
# tests here fail
end
当我将describe B
部分拆分为自己的文件,然后使用bundle exec rspec spec/requests/b_spec.rb
运行时 - 测试运行正常并通过。
调试它,看起来当两个部分都在同一个文件中时,webkit驱动程序会以某种方式加载“脏”浏览器会话。尝试page.driver.reset!
或Capybara.reset_sessions!
或Capybara.reset!
等内容似乎没有任何影响......
当使用旁观者/ spork时这不是问题,因为我可以将测试分成不同的文件并独立运行,但是当使用bundle exec rspec
运行全套测试时 - 这些测试失败了......
如何在测试之间正确重置webkit驱动程序/会话?或者我正在追逐错误的问题?
P.S。这些测试没有以任何特定方式访问数据库或改变状态,所以我很确定这是一些与驱动程序相关的问题。
答案 0 :(得分:1)
有时它只是为弹出的解决方案编写问题。
对我而言,关键是:
这些测试没有以任何特定方式访问数据库或改变状态,所以我很确定这是一些与驱动程序相关的问题。
原来是状态变化。在我的特定情况下,将OmniAuth
设置为test_mode
,这需要在上一次测试运行后将其设置回false
...