Capybara - 没有捕获Angular2 URL

时间:2017-05-19 10:37:19

标签: ruby-on-rails rspec capybara

我在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

1 个答案:

答案 0 :(得分:0)

Capybara的click_xxx方法只需点击上面提到的项目即可。他们不会等待点击发生的动作,因为他们不知道该动作是什么。因此,您不应该将eq匹配器与current_path一起使用,而应该使用内置了等待/重试行为的have_current_path匹配器

expect(page).to have_current_path(demographic_information_patient_path(1))