【发布时间】:2017-08-28 12:43:27
【问题描述】:
我按照documentation 的步骤来测试史诗。
...
store.dispatch({ type: FETCH_USER });
expect(store.getActions()).toEqual([
{ type: FETCH_USER },
{ type: FETCH_USER_FULFILLED, payload }
]);
...
但我失败了,因为稍后收到了第二个操作,如下所示。
Test failed
Expected value to equal:
[{"type": "FETCH_USER"}, {"type": "FETCH_USER_FULFILLED", "payload": [some]}]
Received:
[{"type": "FETCH_USER"}]
Difference:
- Expected
+ Received
@@ -1,20 +1,5 @@
Array [
Object {"type": "FETCH_USER"},
Object {"type": "FETCH_USER_FULFILLED", "payload": [some]} ] // this is what should be.
所以我想我应该知道调度什么时候完成或类似的事情。 我该如何解决这个问题?
我使用了 fetch() 和 Rx.Observable.fromPromise 而不是 ajax.getJSON()
这是我的史诗。
const fetchUserEpic = (action$) =>
action$
.ofType(FETCH_USER)
.mergeMap(() => {
return Rx.Observable.fromPromise(api.fetchUser())
.map((users) => ({
type: FETCH_USER_FULFILLED,
payload: { users }
}))
.catch((error) => Rx.Observable.of({
type: FETCH_USER_ERROR,
payload: { error }
}))
.takeUntil(action$.ofType(FETCH_USER_CANCELLED))
})
【问题讨论】:
标签: reactjs unit-testing jestjs redux-observable