我试图在jasmine中模拟延迟对象的返回,用于我正在测试的Angular2组件。
组件功能:
public createAndExecuteIdentify(url) {
identifyTask = this._widgetFactory.createIdentifyTask(url); //returns object
return identifyTask.execute(this.identifyParams); //this returns a deferred
}
规格:
let fakeTask: any;
fakeTask = {
execute: jasmine.createSpy('execute'),
url: "bob@bob.com"
};
fakeFactory.createIdentifyTask.and.returnValue(fakeIdentifyTask);
describe("when executing identifyTask", () => {
it("should return the proper object", () => {
let taskReturn = component.createAndExecuteIdentify(fakeTask.url);
expect(taskReturn).toEqual(jasmine.objectContaining({
promise: {}
}));
});
});
这很有效,除了fakeTask。execute不返回延迟。
fakeTask的预期结果。execute()将返回如下对象:
b.Deferred {promise: {â¦}, isResolved: Æ, isRejected: Æ, isFulfilled: Æ,
isCanceled: Æ, â¦}
addCallbacks: Æ (a,b)
callback: Æ (a)
cancel: Æ ()
errback: Æ (a)
isCanceled: Æ ()
isFulfilled: Æ ()
isRejected: Æ ()
isResolved: Æ ()
progress: Æ (a)
promise: {isResolved: Æ, isRejected: Æ, isFulfilled: Æ, isCanceled: Æ, then: Æ, â¦}
reject: Æ (a)
resolve:Æ (a) then: Æ (b,d,h)
_pendingDfd: b.Deferred {promise: {â¦}, isResolved: Æ, isRejected: Æ, isFulfilled: Æ, isCanceled: Æ, â¦}
__proto__: Object
所以我想知道,如果以某种方式设置法克塔斯克的执行间谍返回延期会不会奏效?(如上图所示,real thing返回一个延迟的Dojo类型。
http://dojotoolkit.org/reference-guide/1.10/dojo/Deferred.html
)