【发布时间】:2021-06-11 19:04:40
【问题描述】:
我正在尝试为 MyComponent 中的以下订阅块编写测试
ngOnInit() {
// Initalize listener for year dropdown change
this.yearChangeSubscription = this.searchForm.get('year')?.valueChanges.pipe(
debounceTime(400),
distinctUntilChanged(),
switchMap((year: string) => {
return of(year);
})
).subscribe((year: string) => {
console.log('yearChange');
this.filterData({ year });
});
}
我想确保在更改年份表单控件中的值时调用 filterData 函数。所以我写了以下规范。
fit('should call filterData', fakeAsync(() => {
component.searchForm.controls.year.setValue('2005');
fixture.detectChanges();
flush();
const spy: any = jasmine.createSpyObj('MyComponent', ['filterData']);
expect(component.searchForm.controls.year.value).toEqual('2005');
expect(spy.filterData).toHaveBeenCalledTimes(1);
}));
第一个期望通过了,但第二个期望失败了。
我可以在终端上看到yearChange 控制台日志。
知道我在这里做错了什么吗?
【问题讨论】:
标签: angular unit-testing rxjs jasmine