我們最近開始在我們的茉莉花規格中使用未公開的Ember.testing標誌,該標誌有效地禁用了自動運行循環功能。我們發現這需要我們更加明確地關於在runloops中手動包裝代碼,但也給了我們更多的規範穩定性,因爲它突出了我們編寫規範的方式中的問題,並有助於在綁定時記錄文檔對於被測試的代碼來說很重要。是否建議在單元測試中設置Ember.testing = true?
使用此功能是否有官方線路?它似乎對我們的應用產生了相當積極的影響,但我懷疑大多數人都沒有意識到這一點。
我們最近開始在我們的茉莉花規格中使用未公開的Ember.testing標誌,該標誌有效地禁用了自動運行循環功能。我們發現這需要我們更加明確地關於在runloops中手動包裝代碼,但也給了我們更多的規範穩定性,因爲它突出了我們編寫規範的方式中的問題,並有助於在綁定時記錄文檔對於被測試的代碼來說很重要。是否建議在單元測試中設置Ember.testing = true?
使用此功能是否有官方線路?它似乎對我們的應用產生了相當積極的影響,但我懷疑大多數人都沒有意識到這一點。
我從未使用Ember.testing
標誌。我很想知道如何使它在您的規格中更加穩定。我一直在Jasmine測試Ember應用程序,沒有任何問題。
我必須在Ember測試套件的使用Ember.run()
和Ember.run.sync()
之後取得成功。
是的,您應該在您的測試中確定設置Ember.testing = true
。
如果沒有Ember.testing
,則自動調度運行迴路,其中setTimeout
是您注意到的不穩定性來自的地方。
注:目前,當你激活Ember.testing
,你一定最終前綴許多與Em.run =>
測試代碼行的,就像
Em.run => obj.set('someProperty', true)
如果你忘了,它會大聲抱怨,或當您嘗試對它運行斷言時,屬性/應用程序狀態不會更新。
也許這會在某一天得到改善,但現在沒有什麼值得擔憂的,如果你的測試代碼被撥打run
電話。
穩定性似乎主要來自開發人員被迫考慮運行循環,它與正在運行的代碼之間的關係以及該代碼的斷言。大量的Ember內部依賴於當前的運行循環,或者因爲沒有自動運行循環而拋出異常,所以很容易看到規範應該將應用程序代碼打包到哪裏。 – 2012-01-18 02:56:44
由於規格有時會在我認爲應該一直失敗的地方傳遞,因此我們出現了一些間歇性故障。設置Ember.testing = true確保這些規格總是失敗。 – 2012-01-18 03:04:23