【发布时间】:2018-05-30 03:42:57
【问题描述】:
我的 Angular 责任之一是非常新的,所以这个问题可能有答案,我只是不知道要使用的术语....抱歉。
我的服务端点:
//Initializes loading sort device config when the page is loaded
checkSortCfg(forceReload?: boolean): Promise<void>
{
...snip....
let promise = self.sortApiSvc.getOut()
....snip....
return promise;
}
上面调用的 API 服务:
getOut(): Promise<string[]> {
const url = this.uriService.getAppServerUri('...');
return this.http.get<any>(url).toPromise();
}
我的单元测试,我省略了之前的每个等,因为一切似乎都正常运行。
我对 API 调用的模拟:
sortApiServiceCallSpy = jasmine.createSpyObj("SortApi", ["getOut"]);
sortApiServiceCallSpy.getOut.and.callFake(function () {
return {
then: function (callback) {
return callback([
{ value: new Observable<string[]>((observer) => { observer.complete(); }).toPromise() }
]);
}
};
});
当我运行测试和调试时,我的模拟返回为未定义
ReferenceError: 未定义承诺。
让承诺 = self.sortApiSvc.getOut()
所以我的模拟返回值一定是错误的。
sortApiServiceCallSpy.getOut.and.callFake(function () {
return {
then: function (callback) {
return callback([
{ value: new Observable<string[]>((observer) => { observer.complete(); }).toPromise() }
]);
}
};
});
【问题讨论】:
-
你为什么不试试
sortApiServiceCallSpy.getOut.and.returnValue(Promise.resolve(value));? -
@AmitChigadani 成功了。为什么不回答一下,让我接受。
-
很高兴听到这个消息。我已经添加了答案。