遵循教程和其他线程,我无法在使用异步代码时运行测试。以下是我一直在尝试测试的内容:http://emberjs.jsbin.com/xacurasi/1/edit?html,js,output以及入门套件中提供的测试。使用?test
参数打开时应用程序窗口(编辑:显示实际应用程序的框架,而不是qunit测试页面)显示空白页面。
这是我唯一的异步代码:
App.IndexRoute = Ember.Route.extend({
model: function() {
var promise;
Ember.run(function() {
promise = Em.$.getJSON('http://123.345.456.78/ajax/server.php');
});
return promise;
}
});
错误我进入控制台:
Uncaught Error: 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
由于我在Ember.run(function() { //my code here});
答案 0 :(得分:4)
编辑:
该错误解决了这个问题。该错误并不意味着对getJSON
的调用应该在Ember.run
中,这意味着getJSON
调用的回调应该在Ember.run
中。这是Ember的运行循环如何工作的一个怪癖。该代码在正常操作中工作正常,但不在测试模式下工作。有一个关于它的简短讨论here。您需要做的是提供getJSON
函数的回调。这样的事情应该解决它(并明确你正在做什么)。
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
Ember.$.getJSON('http://foobar', function(data) {
Ember.run(null, resolve, data);
});
});
}
或者你可以使用我链接到的线程底部的小库。但我认为我只是为了以防万一。只给你一个使用Ember.js的解决方案。