Rematch / Reducers - Ошибка при написании тестовых случаев - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь написать примеры модульных тестов для моих редукторов. js с использованием библиотеки React Testing. У меня какая-то ошибка, которую я не могу выяснить. Может кто-нибудь помочь мне понять, где я иду не так?

редукторы. js -

const INITIAL_STATE = {
  userData: {},
};

const setUserData = (state, { key, value }) => ({ // {key: value}
  ...state,
  userData: {
    ...state.userData,
    [key]: value,
  },
});

redurs.test. js

import reducersDefault from './reducers';

const {
  setUserData,
} = reducersDefault.reducers;

describe('reducers', () => {
  it('setUserData', () => expect(setUserData({}, { key: { name: 'test' } })).toEqual({
    userData: { userData: { key: { name: 'test' } } },
  }));
});

С помощью Приведенный выше код, я получаю сообщение об ошибке ниже -

Expected value to equal:
      {"userData": {"userData": {"key": {"name": "test"}}}}
    Received:
      {"userData": {"undefined": undefined}}

Пытаясь выяснить, что я делаю здесь неправильно. Любая помощь очень ценится.

1 Ответ

1 голос
/ 25 марта 2020

Ваш тест не пройден, потому что ваша функция не работает должным образом. Вы не можете деструктурировать объект по ключу / значению - то, что вы делаете в настоящее время, извлекает значения key и value свойств объекта, который вы там передаете.

Вот лучший подход:

const setUserData = (state, data) => ({
  ...state,
  userData: {
    ...state.userData,
    ..data, // put every property inside data to userData
  },
});

LE: После прочтения вашего комментария я понял, что вы неверно вызываете свою функцию в тесте:

expect(setUserData({}, { key: 'name', value: 'test' })).toEqual({
    userData: { name: 'test' }
}));

Это должно работать так, как вы ожидаете (без изменения setUserData).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...