RxJS Observer触发事件:
>完成
>错误
>接下来
如果我们想用Jest测试完整的事件.这是怎么做到的?
例如,我们可以测试下一个和错误事件,因为这些函数传递数据:
o.subscribe(result => {
expect(result.data.length).toEqual(1);
},
(e)=>{expect(e).toBeFalsy()},
()=>{ WHAT TO EXPECT HERE? }
完整的事件没有.函数签名是()=> void.我们如何测试该功能签名?
行(e)=> {expect(e).toBeFalsy()}因为它实际上从未触发过.有没有办法检查回调是否没有运行?
最佳答案
const toPromise = obs =>
new Promise((complete, error) => {
obs.subscribe({ complete, error });
});
import { getUserEvents } as user from '../user';
// The assertion for a promise must be returned.
it('works with promises', () =>
expect(toPromise(getUserEvents(4))).resolves.toEqual('Mark'))
通过:
> https://jestjs.io/docs/en/tutorial-async
> https://github.com/ReactiveX/rxjs/issues/3482#issuecomment-385106653
此外,由于Jest将在抛出错误时失败,因此您可以在其测试中使用任何测试框架.例如. import’rxjs / testing’,like described here