如果transitionTo
未包含Ember.run
,则由于缺少运行循环的自动运行,测试将失败。
export default Ember.Controller.extend({
actions: {
actionName: function() {
var router = this.get('target');
setTimeout(function() {
// I want to get rid of this `Ember.run` wrapper, and just use
// `router.transitionTo('index');`
Ember.run(function() {
router.transitionTo('index');
});
});
}
}
});
有没有办法在测试模式下摆脱Ember.run
?
谢谢!
抱歉,遗漏了最重要的事情:问题仅出现在某些异步任务正在进行且Ember.run
在测试模式中被遗漏的情况。使用setTimeout
更新了示例。
答案 0 :(得分:2)
在测试通常设置Ember.testing = true
的ember应用时,这将禁用自动runloop,这使您可以通过Ember.run
Ember.run
因此是强制性的,否则你会遇到竞争条件,因为你的代码不会与ember正在做的其他任务同步。
所以我猜你最好使用Ember.run
包装器。
希望它有所帮助。