对于我的测试,我正在尝试使用Observable.of()
模拟事件流,但是当我尝试
const actions$ = Observable.of({});
...
// in the function that is tested
actions$
.filter(action => action.type === 'LOAD_REQUEST')
.first()
.subscribe(() => { ... do something });
我得到以下错误
emptyError:xxx.js
中没有序列的元素
这仅在我使用.first()
。
如何模拟事件流,以免测试失败?
.first()
将恰好发出一个项目或丢弃错误(如果没有提供defaultValue
参数),因此在空观察中调用它会导致错误。这是基于文档的预期行为。
如果您想从可观察到的最多获得一项,请使用.take(1)
。
first()
的文档说:
如果在发送任何下一个通知之前,可观察到的可观察者完成。
因此,发生错误是因为您的测试数据不会通过filter()
操作员并立即散发。