水豚& Rspec:如何删除帐户?

时间:2012-09-08 20:41:01

标签: ruby-on-rails ruby-on-rails-3 devise capybara rspec-rails

我正在使用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

如何做到这一点?

3 个答案:

答案 0 :(得分:6)

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

page.driver.browser.switch_to.alert.accept

或者,取消:

page.driver.browser.switch_to.alert.dismiss

答案 1 :(得分:3)

尝试

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

这应该有用,然后检查类似

的内容
page.should have_content "Account deleted"

答案 2 :(得分:1)

正如@suweller所说,我们都在使用Capybara::RackTest默认驱动程序。但是,如果没有更改任何设置并在我的rspec测试中添加:js => true,我会让它们通过,之后我会收到相同的错误。

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