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()
运营商立即发出完整。
感谢这个完美答案,确定谁给予“接受答案”真的很难。当你向我解释为什么我看到了错误,以及我做错了什么Tamas给我解决它的解决方案。 – select