2014-02-05 34 views
0

我使用Capybara 2.1.0和Selenium-Webkit 2.38.0 gems來測試一個Rails 3.2.13應用程序。水豚Selenium click_link:未定義的方法`start_with?'爲零:NilClass

我有以下測試:

visit my_favorite_path 
click_link_or_button 'Share' 
page.should have_link 'Send Email' 
click_link_or_button 'Send Email' 
last_email.should be_present 

這是對第二個「click_link_or_button」未能滿足以下(非常不透明的)錯誤:

Failure/Error: click_link_or_button 'Send Email' 
NoMethodError: 
    undefined method `start_with?' for nil:NilClass 

我得到同樣的錯誤,當我更換違規行click_link 'Send Email'first(:link, 'Send Email').click

這裏有什麼問題?測試的第三行通過,似乎確認該鏈接存在,但然後嘗試點擊鏈接失敗,這是非常無益的錯誤。

回答

1

好吧,我傻,我忘了,包括js: true的測試,這似乎已經解決了這一問題:

it 'should send an email when I ask it to', js: true do 
    visit my_favorite_path 
    click_link_or_button 'Share' 
    page.should have_link 'Send Email' 
    click_link_or_button 'Send Email' 
    last_email.should be_present 
end 

我真的寧願只是刪除了這個問題,但似乎我不能了。無論如何,也許這會對發現這種情況的其他人有所幫助。

+0

刪除問題不是一個好主意;我用你的答案解決了我的問題。 :) – Benjamin

0

試試這個:

click_button "Send Email" 

或可能是一些驗證失敗,請檢查您的模型和控制器代碼。在哪裏使用start_with。

+0

'grep -r'start_with?' *'在我的應用程序根目錄中沒有任何內容,它不是一個按鈕,它實際上是一個鏈接(''),所以'click_button'將不起作用 – eirikir

相關問題