针对“页面”的多个Capybara断言仅在第一次识别“页面”?

时间:2015-02-19 20:31:16

标签: ruby-on-rails-4 rspec capybara

我正在努力学习TDD并在使用Capybara时将任何断言分段如下。

before(:all) do
  visit root_path
end

it "should have title" do
  expect(page).to have_content "ApplicationName"
end
it "should have user's name" do
  expect(page).to have_content @user.name
end

但是第二个断言总是因Capybara错误而失败

 Failure/Error: expect(page).to have_content "UserName001"
 Capybara::ElementNotFound:
   Unable to find xpath "/html"

当我切换断言的顺序时,第二个是总是引发此错误的那个。第一次断言后'page'var是否被清除? Capybara在这种情况下做了什么?或者这是不好的做法?

1 个答案:

答案 0 :(得分:2)

因为您指定了before(:all),所以只访问了一次根路径,所以只有第一个示例在访问第一页的上下文中运行。对于任何后续测试,您没有访问过任何页面,因此无法找到任何页面内容。

如果您想在每次测试前访问根路径,请将before(:all)更改为before(:each)或仅before