3

所以我有一个场景:

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(没有显示确认对话框)。不过,这个假设可能是错误的,我不确定。

谢谢你的帮助。

4

1 回答 1

5

GitHub上提出了类似的问题:https ://github.com/thoughtbot/capybara-webkit/issues/84

结论是使用这样的东西,这是由Jesse CookeKen 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

这不会帮助您测试确认对话框的内容(尽管它可以很容易地扩展为这样做),但它可以让您测试当用户单击确定或取消时会发生什么。

在这种特定情况下,您期待一个确认对话框,因为您正在使用生成一个的 Rails 助手。值得考虑一下这是否需要在您自己的应用程序中进行测试;Rails中已经有测试可以覆盖它

于 2012-05-26T09:46:38.760 回答