所以我有一个场景:
Given I signed in to my business account
And there is one customer named "Samantha Seeley"
When I go to the customers management page
Then "Delete" should show a confirmation dialog saying "Are you sure?"
链接很简单:
<%= link_to 'Delete' customer_path(customer), method: :delete, confirm: 'Are you sure?' do %>
因此,当我点击Chrome中的链接时,此代码确实会显示一个确认对话框,但是使用这样的页面呈现:
Then /^"(.*?)" should show a confirmation dialog saying "(.*?)"$/ do |arg1, arg2|
click_on arg1
page.driver.render "tmp/screenshot.jpg"
end
我相信我可以确认javascript似乎没有从屏幕截图中评估(没有显示确认对话框)。这个假设可能是错的,我不确定。
感谢您的帮助。
答案 0 :(得分:5)
在GitHub上提出了类似的问题:https://github.com/thoughtbot/capybara-webkit/issues/84
结论是使用Jesse Cooke和Ken Collins建议的类似内容:
def handle_js_confirm(accept=true)
page.evaluate_script "window.original_confirm_function = window.confirm"
page.evaluate_script "window.confirm = function(msg) { return #{!!accept}; }"
yield
ensure
page.evaluate_script "window.confirm = window.original_confirm_function"
end
这对测试确认对话框的内容没有帮助(尽管可以很容易地扩展它),但是它可以让你测试用户点击OK或取消时会发生什么。
在这种特定情况下,您需要一个确认对话框,因为您正在使用生成一个的Rails助手。值得考虑的是,这是否需要在您自己的应用中进行测试覆盖;已有tests in Rails to cover it。