【发布时间】:2018-04-20 04:04:40
【问题描述】:
在我的 Angular 4.0.0 应用程序中,我有这个方法,在我的组件中调用。
这个方法在服务中被调用:
this.myService.myMethod(param).then(any => {
console.log("success case")
})
.catch(error => {
console.log("error");
}
});
};
由于我正在进行单元测试,我正在通过模拟服务来隔离我的组件:我正在模拟然后这个方法,如下所示:
myMethodSpy= spyOn(service, 'myMethod').and.callFake((reg) => {
return Observable.of('always error message');
});
但是在执行时,似乎我的 spyMethod 没有被调用:
TypeError: this.service.myMethod(...).then 不是函数
关于问题根源的任何想法?
【问题讨论】:
-
Observables 没有 then() 方法。承诺可以。检查服务方法的文档/代码/返回类型,并验证它是否返回了 Promise。在您的测试中返回一个虚假的承诺。
标签: angular unit-testing typescript jasmine spyon