我已经开始在 Angular 中使用 Jest Framework 进行单元测试了。但是,我陷入了需要对combineLatest RxJS 运算符进行单元测试的情况。我的组件如下所示。
零件:
public userData;
public productData;
constructor(
private readonly userService: UserService,
private readonly productService: ProductService
) {}
public ngOnInit() {
this.initialize();
}
public initialize() {
combineLatest([
this.userService.getUserData(),
this.productService.getProductData()
])
.subscribe([userData, productData] => {
this.userData = userData;
this.productData = productData;
});
}
我已经嘲笑了我的服务,我的单元测试如下所示。
it('should initialize user and product data', fakeAsync(() => {
spyOn(userService, 'getUserData');
spyOn(productService, 'getProductData');
component.initialize();
tick();
fixture.detectChanges();
expect(userService.getUserData).toHaveBeenCalled();
expect(productService.getProductData).toHaveBeenCalled();
expect(component.userData).toBeDefined();
expect(component.productData).toBeDefined();
}));
此测试失败,收到:未定义。但是在使用单个 observable 时,同样的测试也有效。