как проверить комбайны с шуткой - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь протестировать combReducers, но получаю следующую ошибку.

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);
  });
});

Это сработало, если я экспортирую все функции в редукторе и импортирую отдельные в тестовом примере, но это не идеальный случай.

1 Ответ

0 голосов
/ 27 марта 2019

combineReducers возвращает функцию, которая объединяет состояния всех редукторов, которые вы в нее вставили. Он не позволяет получить доступ к отдельным редукторам и вызывать их по отдельности.

Вы должны использовать это для вашего случая:

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