3

私は Devise を使用しており、ユーザーが自分のアカウントを削除するシナリオのテストを書いていますが、確認ボックスを呼び出して [OK] をクリックする方法に行き詰まっています。

リンクと私のテストは次のとおりです。

<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

カピバラが 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 に答える