我正在尝试 ember 的集成测试包(http://emberjs.com/guides/testing/integration/),但我收到了这个错误
Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun.
You will need to wrap any code with asynchronous side-effects in an Ember.run
我制作了一个 JSBin 来重现这个错误: http: //jsbin.com/InONiLe/9,我们可以通过打开浏览器的控制台看到它。
我相信导致此错误的data.set('isLoaded', true);
原因load()
是App.Posts
. (代码链接:http: //jsbin.com/InONiLe/9/edit)
现在,如果我将该data.set('isLoaded', true);
行包装在一个 中Ember.run()
,那么它将按预期工作并且测试将通过。
但是,我在我的很多模型中都使用了这种模式,我不想只.set()
用一个包装每个Ember.run()
(转换也会触发相同的错误)。我也不想为了使测试工作而更改应用程序代码。
我还能做些什么来修复错误吗?
注意:我故意不在模型挂钩中返回承诺,否则 UI 将被阻塞,直到承诺解决。我希望立即转换到路线,以便我可以显示加载微调器。