测试看跌期权的效果,而不是直接产生收益

时间:2019-02-06 07:47:38

标签: unit-testing testing redux-saga redux-saga-test-plan

我想知道我应该如何测试这种臭气。我使用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>,但是我不喜欢它。

0 个答案:

没有答案