我在rspec中编写了一个测试,用于在单击链接后检查路径:
click_link("Dew, Muntain A")
expect(current_path).to eq(demographic_information_patient_path(1))
现在,我得到:
current_path = "/"
demographic_information_patient_path(1) = "/patients/1/demographics"
因此,测试失败。我可以看到,在点击链接后,下一页确实是人口统计页面,其URL为“/ patients / 1 / demographics”,但不知何故,水豚无法找到它。
注意:当我手动尝试测试并在rails控制器中打印request.url
时,我得到"/patients/1/demographics"
我可以解决的一个原因是,被点击的页面是Angular2页面,是不是因为capybara无法找到正确的URL?
我与水豚的尝试:
URI.parse(current_url).request_uri #gives "/"
page.current_url #gives "/"
u = page.execute_script("window.location.url"); #gives nil as expected
答案 0 :(得分:0)
Capybara的click_xxx
方法只需点击上面提到的项目即可。他们不会等待点击发生的动作,因为他们不知道该动作是什么。因此,您不应该将eq
匹配器与current_path
一起使用,而应该使用内置了等待/重试行为的have_current_path
匹配器
expect(page).to have_current_path(demographic_information_patient_path(1))