针对 'page' 的多个 Capybara 断言仅在第一次识别 'page'?

Multiple Capybara assertions against 'page' only recognizes 'page' the first time?

我正在努力认真对待我的 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 在第一次断言后是否被清除?水豚在这种情况下在做什么?或者这是不好的做法?

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

如果要在每次测试前访问根路径,将before(:all)更改为before(:each)或只是before