我正在爲Mocha編寫Ember.js應用程序的測試。我使用Teddy Zeenny的ember-mocha-adapter。Ember.js摩卡測試使用異步代碼隨機失敗
一旦涉及到承諾,測試就會隨機失敗。我通常會得到這樣的錯誤:
Error: Assertion Failed: You cannot defer readiness since the `ready()` hook has already been called.
這裏是一個JS Bin testcase。它包含10次相同的測試,並且通常會失敗(使用Firefox和Chromium進行測試)。
相同的測試運行良好QUnit(也許是偶然:))(JS Bin testcase)。我怎樣才能使這個工作與摩卡?我嘗試在Ember.run()調用中包裝承諾,但它不能解決問題。
關於同樣的問題,還有another question,但是Teddy Zeenny提出的正確的JS Bin也失敗了。
的確,我將一個測試轉換爲QUnit時犯了一個錯誤,感謝您指出了這一點。我打算在測試後調用App.reset()。我更正了[QUnit測試用例](http://emberjs.jsbin.com/famajapa/3/edit?js,output)以使用teardown()而不是setup(),它仍然有效。無論如何,隨着你的改變,它仍然失敗(對於第一個測試用例的斷言失敗錯誤消息):(。 –
錯誤,它每次都在爲我工作,我甚至沒有嘗試過Firefox,但它確實在那裏似乎更零星 – Kingpin2k