Angular fakeAsync不适用于debounceTime
我正在尝试使用Angular fakeAsync不适用于debounceTime,angular,rxjs,jasmine,debounce,Angular,Rxjs,Jasmine,Debounce,我正在尝试使用debounceTime(rxjs)为Angular应用程序中的函数编写单元测试。并使用fakeAsync进行异步测试。 在测试中,即使我没有设置tick()或设置像tick(500)这样的小间隔,去BounceTime看起来也会立即得到解决 例如,使用delay(1000)代替debounceTime(1000)fakeAsync可以正常工作 测试: describe('rr', () => { it('should get Date diff correctly
debounceTime
(rxjs
)为Angular
应用程序中的函数编写单元测试。并使用fakeAsync
进行异步测试。
在测试中,即使我没有设置tick()
或设置像tick(500)
这样的小间隔,去BounceTime看起来也会立即得到解决
例如,使用delay(1000)
代替debounceTime(1000)
fakeAsync
可以正常工作
测试:
describe('rr', () => {
it('should get Date diff correctly in fakeAsync with rxjs scheduler', fakeAsync(() => {
let result = null;
of ('hello').pipe(debounceTime(1000)).subscribe(v => { result = v; });
expect(result).toBeNull(); // But it is 'Hello' - debounceTime resolves immediately
tick(1000);
expect(result).toBe('hello');
...
}));
})
stackblitz:操作员的
在收到通知后立即完成。如果不需要其他通知,debounceTime
不需要等待,因此会在发出完整通知时发出通知
为了达到你的效果,试着使用一个长寿命的观察对象,比如主题
describe('rr', () => {
it('should get Date diff correctly in fakeAsync with rxjs scheduler', fakeAsync(() => {
let result = null;
new BehaviourSubject ('hello').pipe(debounceTime(1000)).subscribe(v => { result = v; });
expect(result).toBeNull();
tick(1000);
expect(result).toBe('hello');
...
}));
})
资料来源:
_完成(){
this.debouncedNext();
...
}