【发布时间】:2018-06-11 19:47:28
【问题描述】:
我要为metadataLoadedpromise写测试,sinon版本是4.1.2。
调用了 Promise resolve,但我不知道如何编写正确的测试断言。我绑定的两个断言失败了。
_onObjectMatched : function (oEvent) {
var sObjectId = oEvent.getParameter("arguments").objectId;
this.getModel().metadataLoaded().then( function() {
var sObjectPath = this.getModel().createKey("TaskSet", {
id : sObjectId
});
}.bind(this));
},
QUnit.test("_onObjectMatched", function(assert) {
var oEventStub = {
getParameter: sinon.stub().returns({objectId: "1"})
};
this.oModelStub = {
createKey: sinon.stub().returns("key"),
metadataLoaded : jQuery.noop
};
sinon.stub(this.oModelStub, "metadataLoaded").resolves();
this.oController._onObjectMatched(oEventStub);
//Error: assert before promise resolves
assert.ok(this.oModelStub.createKey.calledOnce, "createKey called");
//Error: this.oModelStub.metadataLoaded.then is not a function
this.oModelStub.metadataLoaded.then(function() {
assert.ok(this.oModelStub.createKey.calledOnce, "createKey called");
});
});
【问题讨论】: