[英]Unit Testing in Jasmine: Spy on service function and call another service function
[英]While doing Unit testing with Jasmine should I mock or spy or stub my service which is injected in my component?
在我的 component.ts 中,服务已被注入到订阅服务中的函数并接收信息的组件的构造函数中。 在这种情况下如何测试我的组件?
在 component.ts 我有以下代码:-
在这种情况下我该如何继续?
您要么必须模拟您的服务,这在单元测试方面总是一个好主意,要么使用下面解释的间谍。
选项模拟:
...
providers: [
{provide: PartService, useClass: MockPartService},
],
...
class MockPartService {
list(): Observable<Part[]> {
return Observable.of([...]);
}
您必须使用与您在测试中调用的方法签名相同的方法签名来编写 MockService。 您可能希望将您的预期返回值硬编码到此 MockClass 中。 当您想要模拟例如 API 请求等时,这通常是您想要的,因此您的测试不会抛出。
选项间谍:
const mockParts: Part[] = [...]
const serviceSpy = spyOn(PartService, 'list').and.ReturnValue(Observable.of(mockParts));
当您希望服务为您的测试带来特定回报时,请使用此选项。
您也可以在测试中自由混合。 存根spyOn(YourService, 'YourMethod').and.stub()
只会阻止调用实际方法,但不会返回任何值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.