Testing and mocking lettable operators in RxJS 5.5

前端 未结 5 2153
你的背包
你的背包 2020-12-17 22:26

Before lettable operator, I did a helper to modify debounceTime method, so it uses a TestScheduler:

export function mockDebounceTime(
    scheduler: TestSche         


        
5条回答
  •  太阳男子
    2020-12-17 22:39

    You can use the second argument that accepts a custom Scheduler.

      debounceTime(DEFAULT_DEBOUNCE_TIME, rxTestScheduler),
    

    All code

    import { Scheduler } from 'rxjs/scheduler/Scheduler';
    import { asap } from 'rxjs/scheduler/asap';
    
    @Injectable()
    export class EffectsService {
      constructor(private scheduler: Scheduler = asap) { }
    
      @Effect()
      public filterUpdated$ = this.actions$
        .ofType(UPDATE_FILTERS)
        .pipe(
            debounceTime(DEFAULT_DEBOUNCE_TIME, this.scheduler),
            mergeMap(action => [...])
        );
    }
    

    Then on test

    describe('Service: EffectsService', () => {
      //setup
      beforeEach(() => TestBed.configureTestingModule({
        EffectsService, 
        { provide: Scheduler, useValue: rxTestScheduler} ]
      }));
    
      //specs
      it('should update filters using debounce', inject([EffectsService], service => {
        // your test
      });
    });
    

提交回复
热议问题