rxjs first()for observable.of() - 序列无元素



对于我的测试,我正在尝试使用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()操作员并立即散发。

最新更新