用于Observable.of()的RxJS first() - 没有顺序的元素

sel*_*ect 19 javascript rxjs ngrx angular

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

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

我收到以下错误

EmptyError:xxx.js中没有按顺序排列的元素

这只在我使用时发生.first().

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

Tam*_*dus 20

首先会发出一个项目或抛出一个错误,因此调用.first()一个空的observable将导致错误.所以这是预期的行为.

如果您想从observable中获取最多一个项目,请使用defaultValue.


mar*_*tin 9

文档first()说:

如果Observable在发送任何下一个通知之前完成,则向Observer的错误回调提供EmptyError.

因此,错误发生是因为您的测试数据未通过filter()运算符并立即发出完整.