为什么当每个规范成功时,一系列规范会失败?

时间:2013-05-21 20:14:23

标签: rspec capybara capybara-webkit

在Capybara 2.1.0上使用Rspec 2.12.0:

如果我运行$ rspec spec/features/user_sees_leaderboard_spec.rb,规范就会通过。

如果我运行$ rspec spec/features/*,则测试失败,声明:

Capybara::ElementNotFound:
   Unable to find css "#flash"

如果我save_and_open_page,则#flash存在且可见。

这是发生故障的助手:

def sign_in_as(user)
  visit new_user_session_path
  fill_in "Email", with: user.email
  fill_in "Password", with: user.password
  click_button "Sign In"
  flash = find("#flash")

  flash.should have_content "You are now signed in."
end

有什么想法吗?我是Capybara的新人,所以不知道从哪里开始。谢谢!

EDIT / UPDATE:

通过对一组在一起运行时失败的规范执行save_and_open_page,我能够看到一系列成功,然后是一系列页面,除了body标签中的“Not Found”之外什么也没说。谷歌没有发现任何事情 - 想法?

更新#2

我注意到BODY中的“未找到”内容是在使用capybara-webkit运行javascript的规范之后开始的。即使在after(:all)块中显式重置Capybara.current_driver =:rack_test也无法解决问题,但我认为这是相关的。

1 个答案:

答案 0 :(得分:1)

虽然仍然不能100%确定导致此问题的原因,但使用capybara-webkit从测试中删除Capybara.automatic_reload = false解决了这个问题。