在我的申请中,我有这个链接:
link_to 'Start', some_path, method: :post
并且,在功能测试中,我需要单击此链接,然后断言该页面不包含此链接(相反,它应包含“停止”链接)
我试图:
click_link 'Start'
但它不起作用 - 链接Start仍然在页面上,或者我正在获得一个带有“重定向”文本的页面(我使用save_and_open_page)
如何解决此问题?
编辑:我正在使用吵闹的司机。答案 0 :(得分:1)
为避免js /浏览器开销,您还可以使用纯ruby进行虚假点击。
例如click_ujs_link "Send"
使用此代码。
def click_ujs_link(name)
link = find(:link, name, {})
visit_with_method link['data-method'], link['href']
end
def visit_with_method(method, url)
page.driver.send method, url
visit page.driver.response.location
end
答案 1 :(得分:0)
要回答我自己的问题,解决方案很简单:只需在包含链接的方案中设置js:true,例如:
scenario 'some description', js: true do
解释:对于使用GET以外的方法的链接,Rails.js动态生成一个表单,如下所示
<a href="url" data-method="post" rel="nofollow">...</a>
所以你需要告诉Capybara它应该使用javascript引擎运行场景(在我们的例子中是poltergeist),你可以通过js:true选项来运行。