原始服务
getVersionDataValuesforPopup(Docversion, versionname, Structureweek, docVersionFieldID, versionid, WLTP) {
return this.http.get(this.apiUrl + 'GetElementPopUpData?docVersion=' + Docversion + '&versionVariant=' + versionname
+ '&structureWeek=' + Structureweek + '&docVersionFieldID=' + docVersionFieldID
+ ' &VersionId=' + versionid + ' &isWLTP=' + WLTP, { withCredentials: true })
.toPromise().then(responce => <CoCCreateVersionPopupPage[]>responce.json())
.catch(error => {
return error;
});
}
在组件中调用原始服务
this.createversionservice.getVersionDataValuesforPopup(this.cocviewversiondatapage.docVersion,
this.cocviewversiondatapage.VersionDescriptions,
this.cocviewversiondatapage.structWeek, dataitems.DocumentVersionFieldId, this.cocviewversiondatapage.Id,
this.cocviewversiondatapage.WLTP)
.then(
data=> { ...});
模拟服务
getVersionDataValuesforPopup(Docversion, versionname, Structureweek, docVersionFieldID, versionid, WLTP) {
return Observable.of({ Result: {} });
}
我在测试方法时遇到错误
TypeError:this.createversionservice.getVersionDataValuesforPopup(...)。那么不是函数
我知道错误的原因,我在我的模拟服务中使用Observable
但真正的服务有promise
,所以然后回调不支持。请告诉我如何写一个模拟为http
承诺服务电话提供服务。
答案 0 :(得分:1)
您使用的是哪种测试框架?
我会创建一个间谍,例如使用Jasmine:
spyOn(createversionservice, 'getVersionDataValuesforPopup')
然后您可以检查您的函数是否被调用。
如果要返回一个promise,可以使用.andReturnValue()方法,例如:
var promise = Promise.resolve('result');
spyOn(createversionservice, 'getVersionDataValuesforPopup').andReturnValue(promise);
其他框架中也会存在类似的间谍
然后,您可以检查方法是否被调用(或者您想要的任何测试,例如:
expect(createversionservice.getVersionDataValuesforPopup).toHaveBeenCalled()
答案 1 :(得分:1)
请您尝试以下方法:
return new Promise((resolve) => { resolve({}); });