我目前正在测试一个我创建的简单组件,如下所示:
@Input()
public type: string;
private saveSubscription: Subscription;
public ngOnDestroy(): void {
this.saveSubscription.unsubscribe();
}
public ngOnInit(): void {
this.onSave();
}
private onSave(): void {
this.saveSubscription = this.editService.saveSelection.subscribe(() => {
this.editService.type.next(this.type);
});
}
在我的测试中,我想确保如果我手动设置输入,然后调用ngOnInit()
,editService
发出的值将等于我的值。
it('should set up the subscription for saving', fakeAsync(() => {
// Arrange
component.type = 'full';
// Act
component.ngOnInit();
fixture.detectChanges();
mockedEditService.saveSelection.next();
// Assert
mockedEditService.type.subscribe(type => {
expect(type).toEqual(component.type);
});
}));
我正在努力测试异步代码并且不确定我是否正确地执行此操作。即使测试用例不正确,测试总是通过,我怀疑有问题的代码在进行断言之前没有等待订阅解析。
阅读Angular test docs,我已经能够熟悉自己了,但我想知道你们是否有任何建议。
由于
答案 0 :(得分:2)
在create-react-app
中,spec
subscription
mockedEditService.saveSelection.next