我正在努力学习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在这种情况下做了什么?或者这是不好的做法?
答案 0 :(得分:2)
因为您指定了before(:all)
,所以只访问了一次根路径,所以只有第一个示例在访问第一页的上下文中运行。对于任何后续测试,您没有访问过任何页面,因此无法找到任何页面内容。
如果您想在每次测试前访问根路径,请将before(:all)
更改为before(:each)
或仅before
。