我想知道我应该如何测试这种臭气。我使用redux-saga-test。这是代码段。
我评论了一段对我来说很难理解的代码。我想问题是操作的有效负载不是由调用api导致的,而是从中提取的数据。另一方面,我不喜欢将storyListResponse传递给reducer的想法。我应该如何处理那些不是从yield'ing返回值的测试?
要测试的英雄传奇
export function* fetchStoriesWorker() {
try {
yield put({ type: type.FETCH_STORIES_START });
const storiesListResponse = yield call(api.stories.list);
yield put({
type: type.FETCH_STORIES_SUCCESS,
payload: storiesListResponse.data // payload isn't result of yielding and that's ok
});
} catch (error) {
yield put({ type: type.FETCH_STORIES_FAILURE, payload: error });
}
}
测试传奇:
it("should fetch stories if there is no any error", () => {
const mockData = [1, 2];
const generator = actions.fetchStoriesWorker();
const expect = fromGenerator(assert, generator);
expect.next().put({ type: type.FETCH_STORIES_START });
expect.next().call(api.stories.list);
expect
.next(mockData)
.put({ type: type.FETCH_STORIES_SUCCESS, payload: mockData }); // throwing AssertionError: expected { Object (@@redux-saga/IO, combinator, ...) } to deeply equal { Object (@@redux-saga/IO, combinator, ...) }
});
如果我开始作为有效负载返回 storiesListResponse 而不是 storiesListResponse.data ,则此方法没有问题strong>,但是我不喜欢它。