我有组件:
isLoading: boolean;
users: User[];
test: number = 1;
ngOnInit() {
this.isLoading = true;
this.userService.getUsers()
.pipe(
finalize(() => {
// Disable loading when complete
this.isLoading = false;
this.test = 5;
})
)
.subscribe(results => {this.users = results})
}
我已经对其进行了测试(.spec.ts)
it('should be 5 after ngOnInit', () => {
component.ngOnInit();
expect(component.test).toBe(5);
});
我在测试“预期1为5”时遇到错误。 为什么会出现此错误,如果我在ngOnInit之后读取值,则会忽略.finalize?我如何从.finalize块中获取价值。 Fixture.detectChanges()也无济于事。
答案 0 :(得分:1)
可以像这样测试:
it('should set test value to 5', () => {
const userService= TestBed.get(UserService);
userService.getUsers()
.pipe(
finalize(() => {
expect(component.test).toEqual(5);
} )
)
});
我使用了模拟服务:
class MockUserService {
getUsers(): Observable<number> {
return of(1, 2, 3);
}
}
在configureTestingModule中
{provide: UserService , useValue: new MockUserService ()}