对于我的测试,我试图使用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()
时才会出现这种情况。
如何模拟事件流,以便测试不会失败?
答案 0 :(得分:17)
首先会发出一个项目或抛出错误,因此在空的observable上调用.first()
会导致错误。所以这是预期的行为。
如果您想从observable中获取最多一个项目,请使用.take(1)
。
答案 1 :(得分:8)
first()
的文档说:
如果Observable在发送下一个通知之前完成,则向Observer的错误回调发送一个EmptyError。
因此,错误发生是因为您的测试数据未通过filter()
运算符并立即发出完整。