我使用的是Ember.js Asynchronous Routing指南中描述的功能。也就是說,我從異步路由model
鉤子返回一個承諾,以便延遲轉換到按預期工作的路由。如何使用異步路由完成Ember單元測試?
但是,它打破了單元測試我的應用程序的能力。當我運行測試中,我得到以下錯誤在控制檯:
斷言失敗:您已經打開的測試模式,禁用 運行循環的自動運行。您將需要包裝異步 副作用的任何代碼在Ember.run
我裹在Ember.run
異步副作用的所有代碼,但我仍然得到錯誤。
這裏有一個的jsfiddle一個小例子:http://jsfiddle.net/nRHfv/3/
的例子是基於灰燼入門套件和測試運行它配備。它有一個工作的異步索引路由。如果您在_config
對象(第10行)中將testing: false
設置爲true
,它將打開測試套件,並且您應該在控制檯中看到上述錯誤。
我的異步路由的model
掛鉤位於第38行。我已經嘗試了在Ember.run
中包裝代碼的幾個變體。例如,我嘗試在Ember.run
之外定義承諾,完成所有異步內容,然後在外部返回承諾。我也嘗試在Ember.run
中包裝then()
的內容,就像我在其他答案中看到的一樣(例如ember integration test error. dealing with asynchronous side-effects)。
我在做什麼錯?
對於查看此錯誤的人可能想查看關於ember run loop的視頻:https://www.youtube.com/watch?v = RLgPBM72LQw – lft93ryt