我有一个集成测试,通过"确认详细信息"进程,然后返回主页面以验证确实已经处理了详细信息。
然而,当我在测试结束时访问主页时,它并没有去那里......
within '#confirm_details' do
page.find_button("Continue").trigger('click')
end
find("#email_confirmation_modal a.email_confirmation_yes").trigger('click')
expect(page).to have_css('span.balance') # Probably a false positive, but I've also
# checked for elements that should only be there after the click
visit '/myaccount'
expect(page).to have_current_path '/myaccount'
...结果:
Failure/Error: expect(page).to have_current_path('/myaccount')
expected "/sign_up/confirm_details" to equal "/myaccount"
......但有时它很好。任何人都知道为什么?
(我会在这里添加其他详细信息。)
my_account
操作并不总是被解雇(这应该是应用程序的入口点,对吗?)visit '/myaccount' until page.current_path == '/myaccount'
并挂起。答案 0 :(得分:0)
当visit
返回时,页面加载不能保证完成(驱动程序尝试尽力而为,但并非总是可行)。出于这个原因,你应该总是使用Capybara提供的匹配器,因为他们有内置的等待/重试行为,因为你正在尝试测试它。在你的情况下,你永远不应该使用RSpec提供的eq
匹配器current_path,你应该使用Capybara提供的have_current_path
匹配器。
visit '/myaccount'
expect(page).to have_current_path('/myaccount')
如果这不能解决您的问题,那么您的代码可能会填写“确认详细信息”,因此您可能希望将测试完整代码添加到问题中。