3

我正在使用 Devise 并为用户删除自己的帐户的场景编写测试,但我不知道如何调用确认框并单击“确定”。

这是链接和我的测试:

<p><%= link_to "Delete my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete %></p>

规范/请求/users_spec.rb

scenario 'user deletes account' do
   make_user_and_login
   click_link('Account Settings')
   page.should have_selector('title', :text => 'Account Settings')
   click_link('Delete my account')
   # Are You Sure?
   # click OK in confirm box
   # page.should etc.....
end

这将如何完成?

4

3 回答 3

6

确保 capybara 使用支持 javascript 的驱动程序。然后试试这个:

page.driver.browser.switch_to.alert.accept

或者,取消:

page.driver.browser.switch_to.alert.dismiss
于 2012-09-09T21:13:58.777 回答
3

尝试

page.evaluate_script('window.confirm = function() { return true; }')

这应该可以工作,然后检查类似的东西

page.should have_content "Account deleted"
于 2012-09-09T01:30:39.853 回答
1

正如@suweller 所说,我们都在使用Capybara::RackTest默认驱动程序。但是,在没有更改任何设置并添加:js => true我的 rspec 测试的情况下,我让它们通过了,而在我遇到与您相同的错误之前。

这让我page.driver.browser.switch_to.alert.accept至少可以使用。

于 2012-12-31T14:37:48.273 回答