2013-01-12 31 views
15

我一直有問題,我的測試超時和隨機失敗。我一直在尋找如何編寫健壯的水豚綜合測試的最佳實踐,但我沒有發現任何有用的東西。自從我們開始編寫一堆測試以來,我們的CI服務器一直在隨機失敗,使得我們的應用看起來不穩定,但測試總是(大部分)通過本地。我怎樣才能寫出不超時或與rspec,水豚,和poltergeist隨機失敗的JavaScript測試?

我想找出你和其他有經驗的BDD/TDD大師如何處理:

  • 如何應對外部JavaScript和東西(KissMetrics,谷歌Analyics等),
  • 調試和防止超時錯誤打破構建

任何幫助,將不勝感激。

+0

您使用哪個版本的poltergeist和phantomjs?我遇到了看似隨機的時序問題,其中波動曲線> 0.7.0和幻影1.7.0。當我們以0.7.0和phantomjs <1.7.0固定了怪物時,他們離開了(我忘記了確切的數字,但我認爲1.7.0是麻煩發生時)。 –

+0

我使用的是poltergeist(1.0.2)和phantomjs 1.7.0。我只注意到[phantomjs 1.8.9發佈](http://phantomjs.org/release-1.8.html),但我沒有嘗試過。我會升級並測試它。由於我們遇到的所有麻煩,我想知道是否有人使用這些工具。 :) – PeppyHeppy

+0

很酷。請在此回報您的發現。很想知道我的問題是否也可以解決。 :-) –

回答

7

要跟進這一點。我感謝@ jonleighton的邀請文件上騷靈的錯誤,但我遇到了涉及兩個不同的問題的問題:

  1. 壞/錯誤豚斷言,因爲我沒有按照this post明確列出的建議,將超時
  2. 第三方javascript和東西。基本上我有第三方的javascripts,比如kissmetrics,谷歌分析,甚至是每次測試出錯都會加載的實時幫助聊天,我消除了這種情況發生,我的測試速度更快,看起來更穩定/一致。
+0

這並不能解釋究竟是什麼原因。第三方腳本中的某些內容導致了它,你是否有任何線索? – joaomilho

+0

@joaomilho我遇到的問題與測試中的超時和錯誤斷言有關,特別是替換頁面。應該不使用內容('blah')'使用'page.should have_no_content('blah')' – PeppyHeppy

3

我發現在很多情況下,我可以利用Poltergeist的黑名單功能幫助我的集成測試更具確定性。就我而言,我列出了黑名單,如下所示。

typekit.net 
facebook.net 
facebook.com 
google.com 
google-analytics.com 
... 

這個想法是關閉a)不是真正需要測試的任何東西,b)可能會影響CI環境下的頁面加載完成。我注意到這非常有幫助。另外,與Poltergeist一起使用PhantomJS選項也有幫助:

phantomjs_options: ['--ignore-ssl-errors=yes'] 
+0

Phantomjs文檔指定使用true/false作爲--ignore-ssl-errors,儘管yes/no也被支持。 – SamH