Необходимо написать тестовые примеры для редукторных редукторов, которые используют комбинированные редукторы - PullRequest
0 голосов
/ 05 июня 2018

Я хочу написать несколько тестов, использующих функцию combnereducers().У меня есть что-то вроде следующего.

myReducers1.js

function reducer1(state = {}, action) {
   //some logic
}

function reducer2(state = {value1: {}}, action) {
  //some logic
}

const appReducer = combineReducers({reducer1, reducer2})

export default appRecuer;

Так есть ли способ проверить код, написанный внутри reducer1 и reducer2?Если есть, то как я могу добраться до функций reducer1 и reducer2, которые находятся внутри myReducers1.js.Я уже знаком с Testing Redux , но это имеет другой контекст.Поэтому, пожалуйста, помогите мне.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Предполагая, что вы экспортировали индивидуальный редуктор и действие, вы просто вызываете редуктор с пользовательским / желаемым действием и передаете исходное состояние или желаемое состояние и проверяете объект измененного состояния.

import reducer from '../src/reducers/reducer1';
import * as actions from '../src/actions/action1';

describe('reducer1', () => {
  it('should return the initial state', () => {
    const state = reducer(undefined, {});
    expect(state.loading).toEqual(true);
  });

  it('should handle CUSTOM_ACTION', () => {
    const action = {
      type: actions.CUSTOM_ACTION
    };
    const state = reducer({}, action);

    expect(state.foo).toEqual('desired value');
  });
});
0 голосов
/ 06 июня 2018

при помощи jest:

mock a prevState:

const state = {var1: value};

убедитесь, что как редуктор, так и действие объявлены или импортированы в файл теста, и запустите тест:

test('reducer test', () => {
  expect(reducer(state, action).toBe(your result);
});

пример:

const testAction = { type:'INCREMENT_AGE' };

const prevState = { age: 37, name: "John Doe"};

const reducer = (state, action) => (action.type === "INCREMENT_AGE" ?{...state, age: state.age + 1} : state)

test('reducer test', () => {
  expect(reducer(prevState, testAction).toEqual({name: "John Doe", age: 38});
});
...