[英]Omniauth Test Mock Doesn't Work When Using Capybara-webkit Driver
[英]How do I fail a step in a feature test with Capybara-Webkit when there is a JavaScript error on a page?
我使用Cucumber,Capybara和Capybara-webkit在我的Ruby on Rails應用程序中測試不同的場景。
有沒有辦法在場景運行時檢測到頁面上的任何JavaScript錯誤並且測試失敗? 我們正在使用這些測試來確保我們不會在更改之間破壞功能(包括JavaScript),這是我們自動化測試運行的一部分。
我可以在測試輸出中看到失敗,但它不會使測試失敗:
http://127.0.0.1:54928/...|16|ReferenceError: Can't find variable: $
http://127.0.0.1:54928/...|16|ReferenceError: Can't find variable: $
...
謝謝!
更新:我發現的一種方法是嘗試執行一些只有在以前的錯誤沒有發生時才可能執行的JavaScript。 在這種情況下,我會得到這樣的錯誤:
Javascript failed to execute (Capybara::Driver::Webkit::WebkitInvalidResponseError)
./features/step_definitions/....rb:19:in `/^I should not see any JavaScript errors$/'
features/....feature:34:in `Then I should not see any JavaScript errors'
有沒有更好的辦法?
是的,你可以訪問所有控制台消息page.driver.console_messages
或僅與錯誤信息page.driver.error_messages
。
為了測試沒有javascript錯誤,我會建議以下內容:
Then /^I should see no Java\-Script errors$/ do
page.driver.error_messages.length.should == 0
end
旁注:capybara-webkit還包括一個matcher :have_errors
來編寫一個很好的page.should_not have_errors
。 不幸的是,這似乎在當前版本中被破壞了(至少對我而言;另見: https : //github.com/thoughtbot/capybara-webkit/pull/201 )
capybara-webkit
似乎總是在我們的環境中有兩條虛假的消息。 我試圖盡可能具體,並過濾掉這些,但以下是我們在使用capybara-webkit檢測到javascript錯誤時自動失敗:
AfterStep do
if webkit?
real_error_messages = []
page.driver.error_messages.each_with_index do |e, i|
# first two messages appear to be bogus, always.
if (e[:line_number] == 0) && (e[:source].eql? 'undefined') && (e[:message].eql? 'TypeError: \'null\' is not an object') && i <= 1
# discard message
else
real_error_messages << e
end
end
raise "Javascript errors: #{real_error_messages}" if real_error_messages.length > 0
end
end
webkit?
在哪里webkit?
是:
def webkit?()
[:webkit, :webkit_debug].include? Capybara.javascript_driver
end
盡管收到JavaScript錯誤的通知有時可能會有所幫助,但您應該嘗試測試實際的JavaScript行為。 如果存在JavaScript錯誤,則應將其自身表現為失敗方案。
您在每個步驟上運行的最佳方式是“向我顯示頁面”並檢查您的Web控制台。 然后,您可以在您的代碼中放置console.log。 您為所選步驟執行操作的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.