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();
})
}
})
欢迎赞赏