2012-09-08 27 views
3

我正在使用Devise併爲用戶刪除自己的帳戶的方案編寫測試,但我卡在如何調用確認框並單擊確定。水豚&Rspec:如何刪除一個帳戶?

這裏是鏈接和我的測試:

<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 

這將如何做呢?

+2

希望這個答案會幫助你:http://stackoverflow.com/questions/2458632/how-to-test-a-confirm-dialog-with-cucumber –

回答

6

確保水豚是利用其支持JavaScript的驅動程序。 那就試試這個:

page.driver.browser.switch_to.alert.accept 

或者,取消:

page.driver.browser.switch_to.alert.dismiss 
+0

不幸的是,我得到:'失敗/錯誤:page.driver.browser.switch_to.alert.accept NoMethodError: 未定義方法'switch_to'for#' – LearningRoR

+2

你正在使用'水豚:: RackTest',這是一個沒有JavaScript支持的無頭瀏覽器。 – suweller

3

嘗試

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

這應該工作,然後檢查類似

page.should have_content "Account deleted" 
+0

我試着這個時得到這個錯誤:'失敗/錯誤:page.evaluate_script('window.confirm = function(){return true;}') 水豚:: NotSupportedByDriverError: 水豚:: NotSupportedByDriverError' – LearningRoR

+1

我前一段時間得到了這個,不知道是什麼導致了它。對我來說,它是通過更新我的寶石解決 – RunsnbunsN

+3

這是因爲你正在使用'水豚:: RackTest'。此驅動程序不支持執行任何javascript – suweller

1

正如@suweller說,大家都用的Capybara::RackTest默認驅動程序。但是,如果不更改任何設置並在我的rspec測試中添加:js => true,我就會讓它們通過,之前我得到的是同樣的錯誤。至少可以使用page.driver.browser.switch_to.alert.accept