我不明白如何使用Ember.Test包提供的等待助手来构建我们自己的助手。我所理解的少数是,我们必须在我们的助手结束时系统地“等待(......)”。 但是如何报告我的异步操作已完成?我们可以将参数传递给wait方法,所以我认为我可以传递一个promise,并在异步操作完成后解析promise ...但它不起作用:D
为了说明我的想法,我做了一个带有示例的JSBIN:http://jsbin.com/OxeniTO/30/
App = Em.Application.create({
rootElement:"#ember-app"
});
App.setupForTesting();
App.injectTestHelpers();
App.advanceReadiness();
test('Wait 1000ms and fail',function(){
visit('/').then(function(){
var promise = $.Deferred();
setTimeout(function(){
ok(false, "Assertion failed");
promise.resolve();
}, 1000);
ok(true, "Assert passed");
return wait(promise);
});
});
在这种情况下,Qunit的Ember.Test.Adapter不会等待承诺解析。
答案 0 :(得分:3)
尝试将您的解决承诺包含在Ember.run.later
中,而不是使用setTimeout
:
...
Ember.run.later(function(){
ok(false, "Assertion failed");
promise.resolve();
}, 1000);
...
希望它有所帮助。