0
我有一個控制器,其中有一個動作調用一個方法來執行一些異步的東西並返回一個承諾。Ember.js在控制器中測試異步動作
export default Ember.Controller.extend({
_upload: function() {
// return a promise
},
actions: {
save: function(item) {
this._upload(item).then(function(response) {
// Handle success
}, function(error) {
// Handle error
}
}
}
});
我想單元測試Handle success
和Handle error
下的代碼。 在我的單元測試,我嘲笑了_uploadMethod
使用
controller.set("_upload", function() {
return new Ember.RSVP.Promise(function(resolve) {
resolve({name: "image1"});
});
});
然後我調用的行動,並斷言,成功處理程序所做的是工作
controller.send("save", "item");
assert.equal(controller.get("selected.item"), "item");
的問題是,斷言失敗,因爲它在承諾解決之前運行並且所有成功處理程序中的內容都已完成。
如何在斷言被檢查之前等待承諾解決?
它的工作原理,謝謝。 – GUL