如何用Immer / production测试减速器?

时间:2020-05-03 13:35:36

标签: reactjs react-redux jestjs

如何使用沉浸式的生产函数编写减速器的单元测试(笑话)? 使用Produce不会返回状态-状态是“可变的”。 Jest如何测试此代码并覆盖switch / case分支?

样品减少器:

const appReducer = produce((state: IAppState, action: IAction) => {
  switch (action.type) {
    case FETCH_APP_REQ:
      break;
    case FETCH_APP_SUCCESS:
      state.appDetails = action.payload;
      break;
    case FETCH_APPLICATION_FAILURE:
      break;
    default:
      return state;
  }
}, initialState);

谢谢。

1 个答案:

答案 0 :(得分:0)

一个简单的示例是以下测试动作FETCH_APP_SUCCESS

 describe("app-reducer", () => {
  describe("FETCH_APP_SUCCESS", () => {
    it("should set the appDetails", () => {
      const storeState = reducer(initialState, {
        type: "FETCH_APP_SUCCESS",
        payload: { appDetails: "appDetails" },
      });
      const newState = produce(initialState, (draftState) => {
        initialState.appDetails = "appDetails";
      });
      expect(storeState).toEqual(newState);
    });
  });