针对 '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
。
我正在努力认真对待我的 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
。