Rxjs拥有一个自带的测试库,使用RxJS测试往往需要使用其弹珠测试的方法。示例如下:
import { from } form 'rxjs';import { TestScheduler } from 'rxjs/testing';describe('test example', ()=>{let testScheduler: TestScheduler;beforeEach(() => {testScheduler = new TestScheduler((actual, expected) => {expect(actual).toEqual(expected);})})it('should be example', ()=> {testScfheduler.run(({ expectObservable }) => {const expectedMarble = '(abc|)';const observable$ = from([1, 2, 3]);const expected = {a: 1, b: 2, c: 3};expectObservable(observable$).toBe(expectedMarble, expected);})})})
测试Promise
由于Promise在JS中是一个微任务,而现在(2022-2-23)RxJS的弹珠测试还不能完美模拟Promise,所以我们就需要使用传统的方法进行测试。如下:
describe('observable with promise', () => {it('should be true', (done) => {const promise$ = from(Promise.resolve(true));promise$.subscribe(x=>{expect(x).toBeTruthy();done();})}})
欢迎赞赏
