Programing

bombineReducers와 jest를 테스트하는 방법

c10106 2022. 3. 27. 13:54
반응형

bombineReducers와 jest를 테스트하는 방법

combinedEmprocessors를 테스트하려고 하는데 오류가 발생했어.

TypeError: _testReducer.testReducer.test11은 함수가 아님

다음은 환원기

// testReducer.js
import { combineReducers } from "redux-immutable";
const test11 = (state, action) => {
 switch (action.type) {
    case "temp11":
      return true;
    default:
      return state;
  }
};
const test22 = (state, action) => {
 switch (action.type) {
    case "temp22":
      return false;
    default:
      return state;
  }
};
export const testReducer = combineReducers({
  test11,
  test22,
});

다음은 테스트 케이스

// testReducer.test.js
import { testReducer } from "./testReducer.js";
describe("test for testReducer", () => {
  it("test11", () => {
    const returnTrueValue = true;
    expect(
      testReducer.test11(
        true, {
          type: "temp11",
        }
      )
    ).toEqual(returnTrueValue);
  });
  it("test11", () => {
    const returnFalseValue = false;
    expect(
      testReducer.test22(
        true, {
          type: "temp22",
        }
      )
    ).toEqual(returnFalseValue);
  });
});

환원기의 모든 기능을 수출하고 테스트 케이스의 개인을 수입하면 효과가 있었지만, 아이디어 케이스는 그렇지 않다.

combineReducers모든 환원기의 상태를 병합하는 함수를 반환하십시오.그것은 당신이 개별 환원기에 접근하고 개별적으로 전화하는 것을 허용하지 않는다.

이 방법은 다음과 같이 사용하십시오.

expect(
    testReducer(true, {type: "temp11"}).test11
).toEqual(returnTrueValue);

구성품 환원기는 아래와 같을 것 같다.

export const initialState = {
  totalValue: 0
};

const DashboardReducer = (state = initialState, action: any)=> {
  switch(action.type) {
    case 'case1':
     .......
     .......
     .......
    default:
      return state;
 }

뿌리 환원기는 아래와 같다고 가정한다.

export const rootReducer = combineReducers({
  dashboard: DashboardReducer
});

테스트 파일은 다음과 같아야 한다:

import { rootReducer } from './root.reducer';
import { createStore } from 'redux';
import { initialState as dashboardState } from './modules/uv_dashboard/uv_dashboard.reducer';

describe('Root Reducer Suite', () => {

  let store = createStore(rootReducer)

  test('loaded correctly', () => {
    expect(store.getState().dashboard).toEqual(dashboardState);
  });
});

참조URL: https://stackoverflow.com/questions/55373079/how-to-test-combinereducers-with-jest

반응형