나는 테스트중인 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: "[email protected]"
};
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의 실행 스파이를 설정하는 경우
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
그래서 내가 궁금 :
fakeTask.execute의 원하는 결과()이 같은 객체를 반환? (상술 한 바와 같이 실제 건 지연된 도장 타입을 리턴 http://dojotoolkit.org/reference-guide/1.10/dojo/Deferred.html.)
'fakeTask.execute.and.returnValue (...)'? 귀하의 예제가 일관성없는 이름을 사용하는 것으로 보이므로 [mcve]가 아닙니다. – jonrsharpe
예, 좀 더 복잡한 구성 요소의 일부이며 조금 복잡해집니다. Angular의 $ q 라이브러리는 재미 있었지만 Angular2에 해당하는 라이브러리가 있는지 확실하지 않았습니다. –
'fakeTask.execute.and.returnValue (...)'가 거의 작동합니다. 필요한 개체를 제공하지만 개체 유형에 영향을 미칩니다. 그래서 오류가 발생합니다 : ** TypeError : 스트림이 예상되는 곳에 잘못된 개체를 제공했습니다. Observable, Promise, Array 또는 Iterable을 제공 할 수 있습니다. ** 제 실제 사례에서, 객체 유형은 b.Deferred로 나열됩니다. –