RxJS first() for Observable.of() - 序列中没有元素

RxJS first() for Observable.of() - no elements in sequence

对于我的测试,我试图用 Observable.of() 模拟一个事件流,但是当我尝试

const actions$ = Observable.of({});
...
// in the function that is tested
actions$
  .filter(action => action.type === 'LOAD_REQUEST') 
  .first()
  .subscribe(() => { ... do something });

我收到以下错误

EmptyError: no elements in sequence in xxx.js

只有在我使用 .first() 时才会出现这种情况。

如何模拟事件流以使测试不失败?

first() 的文档说:

Delivers an EmptyError to the Observer's error callback if the Observable completes before any next notification was sent.

所以发生错误是因为您的测试数据没有通过 filter() 运算符并立即发出完整。

.first() 将仅发出一项或抛出错误(如果未提供 defaultValue 参数),因此在空的可观察对象上调用它会导致错误。这是基于文档的预期行为。

如果您想从 Observable 中获取最多一项,请使用 .take(1)