RxJS第一个()的Observable.of() - 在序列中没有的元素

RxJS第一个()的Observable.of() - 在序列中没有的元素

问题描述:

对于我的测试中,我试图用Observable.of()嘲笑的事件流,但是当我尝试RxJS第一个()的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()时。

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

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

如果您希望从observable中获取至多一项,请使用.take(1)

first()文档说:

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

所以错误发生,因为您的测试数据不通过filter()运营商立即发出完整。

+0

感谢这个完美答案,确定谁给予“接受答案”真的很难。当你向我解释为什么我看到了错误,以及我做错了什么Tamas给我解决它的解决方案。 – select