我有一組測試導致用戶登錄的Facebook頁面。不幸的是,這個頁面有一些我無法影響的JavaScript錯誤,所以我的測試永遠不會完成。在Poltergeist中暫時設置js_errors爲false
有沒有辦法暫時禁用JS錯誤檢查?我在考慮類似於:Capybara.javascript_driver.js_errors = false
,稍後將其設置爲true
,但不幸的是,這不起作用。我嘗試過這種變化無濟於事。
關於如何解決我的問題的任何想法?
我有一組測試導致用戶登錄的Facebook頁面。不幸的是,這個頁面有一些我無法影響的JavaScript錯誤,所以我的測試永遠不會完成。在Poltergeist中暫時設置js_errors爲false
有沒有辦法暫時禁用JS錯誤檢查?我在考慮類似於:Capybara.javascript_driver.js_errors = false
,稍後將其設置爲true
,但不幸的是,這不起作用。我嘗試過這種變化無濟於事。
關於如何解決我的問題的任何想法?
感謝Roman Pominov的評論,我找到了解決方案。其實很簡單:
我剛剛在問題陳述後添加了rescue Capybara::Poltergeist::JavascriptError
,然後它就像一個魅力。我最初的想法是過於複雜;)
你最初的想法是什麼?我有大量的測試,所以禁用前/後塊中的js_errors比向每個測試添加挽救語句更可取 – cjhin
好吧,如果可能的話,我會建議處理所有JS錯誤(畢竟它們是錯誤的) 。如果不可能的話,我會堅持'救援'。據我所知,我最初的想法是在問題中描述的。有沒有可能解決這些JS錯誤? – TrashyMcTrash
啊,我不好,我想也許你有另一個想法,你刪除了編輯。它的JS錯誤是拋出一個外部服務?我想我的更大的問題是,我有一個功能規格首先訪問外部服務。 – cjhin
這使得招:
page.driver.browser.js_errors = false
您也可以圍繞回調添加:
# spec_helpers.rb
config.around(:each) do |example|
original_value = page.driver.browser.instance_variable_get(:@js_errors)
if example.metadata.has_key?(:js_errors)
page.driver.browser.js_errors = example.metadata[:js_errors]
end
example.run
page.driver.browser.js_errors = original_value
end
在你的測試:
# my_feature_spec.rb
it "should ignore errors", js_errors: false do
...
end
您可以將測試代碼封裝到try {} catch(e){}塊嗎?我的意思是Facebook頁面打開的部分。或者測試自己不寫在JavaScript? –