我使用的是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