Rxjs拥有一个自带的测试库,使用RxJS测试往往需要使用其弹珠测试的方法。示例如下:

  1. import { from } form 'rxjs';
  2. import { TestScheduler } from 'rxjs/testing';
  3. describe('test example', ()=>{
  4. let testScheduler: TestScheduler;
  5. beforeEach(() => {
  6. testScheduler = new TestScheduler((actual, expected) => {
  7. expect(actual).toEqual(expected);
  8. })
  9. })
  10. it('should be example', ()=> {
  11. testScfheduler.run(({ expectObservable }) => {
  12. const expectedMarble = '(abc|)';
  13. const observable$ = from([1, 2, 3]);
  14. const expected = {a: 1, b: 2, c: 3};
  15. expectObservable(observable$).toBe(expectedMarble, expected);
  16. })
  17. })
  18. })

测试Promise

由于Promise在JS中是一个微任务,而现在(2022-2-23)RxJS的弹珠测试还不能完美模拟Promise,所以我们就需要使用传统的方法进行测试。如下:

  1. describe('observable with promise', () => {
  2. it('should be true', (done) => {
  3. const promise$ = from(Promise.resolve(true));
  4. promise$.subscribe(x=>{
  5. expect(x).toBeTruthy();
  6. done();
  7. })
  8. }
  9. })

欢迎赞赏
欢迎赞赏