2

对一些 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!似乎没有任何效果......

使用 spectator/spork 时这不是问题,因为我可以将测试拆分为不同的文件并独立运行它们,但是当使用 - 这些测试运行全套测试时bundle exec rspec...

如何在测试之间正确重置 webkit 驱动程序/会话?还是我在追逐错误的问题?

ps 这些测试没有以任何特定方式访问数据库或改变状态,所以我很确定这是一些与驱动程序相关的问题。

4

1 回答 1

1

有时它有助于编写问题以弹出解决方案。

对我来说关键是:

这些测试没有以任何特定方式访问数据库或改变状态,所以我很确定这是一些与驱动程序相关的问题。

原来有一个状态变化。在我的特殊情况下,设置OmniAuthtest_mode,这需要在上一个测试运行后将其设置回false......

于 2012-07-24T16:47:08.143 回答