ApiServiceSpy
export class ApiServiceSpy {
get() {
return Observable.of(null);
}
}
UserService
export class UserService {
constructor(private apiService: ApiService) {
this.initUser();
}
initUser() {
this.fetchUser().subscribe(user => console.log(user.name));
}
fetchUser(): {name: string} {
return this.apiService.get('user');
}
}
UserService.spec
export class UserServiceSpec {
...
{
providers: [
{provide: ApiService, useClass: ApiServiceSpy}
]
}
...
it('should be created', () => {
expect(service).toBeTruthy();
});
}
好的,因此现在“应该创建”测试失败了,因为服务的构造函数调用了initUser
方法,该方法使用fetchUser
并尝试进入user.name
,但是apiService.get返回{ {1}},因此我们无法读取null
的null-可以理解。
所以我正试图监视name
UserService.spec
fetchUser method
不幸的是,结果是一样的。这怎么可能?我只是在监视整个export class UserServiceSpec {
...
{
providers: [
{provide: ApiService, useClass: ApiServiceSpy}
]
}
...
beforeEach(() => {
spyOn(service, 'fetchUser').and.returnValue(Observable.of({name: 'Daniel'});
});
it('should be created', () => {
expect(service).toBeTruthy();
});
}
方法,但规范仍将apiService.get间谍视为更重要。