it(`should handle ${GET_POSTAL_SUCCESS}`, () => {
const payload = {
postalCode: {
postalInfo: {
postalCode: '5282',
},
},
};
expect(reducer(state, { type: GET_POSTAL_SUCCESS, payload })).toEqual({
...state,
postalInfo: payload.postalCode,
loading: false,
})
});
Первое получено, а второе ожидается в блоке кода. По какой-то причине он не будет хорошо форматироваться здесь.
Ошибка: ожидаемо (получено) .toEqual (ожидаемо) // глубокое равенство
- ожидаемо
+ Получено
*Object {
"loading": false,
- "postalInfo": Object {
- "postalInfo": Object {
- "postalCode": "5282",
- },
- },*
**+ "postalInfo": undefined,**
}
Почему postalInfo не будет определен в полученном с этим блоком кода? Я просто не понимаю
expect(reducer(state, { type: GET_POSTAL_SUCCESS, payload }))
Вот мой оригинальный редуктор:
function reducer(state = defaultState, action) {
switch (action.type) {
case constants.GET_POSTAL:
return {
...defaultState,
code: action.code,
loading: true,
};
case constants.GET_POSTAL_SUCCESS:
return {
...state,
postalInfo: action.payload.result,
loading: false,
};
А вот весь мой тест до сих пор:
let state = reducer(undefined, {});
it('should have initial state', () => {
expect(state).toBeDefined();
});
describe('get postals', () => {
it(`it should handle ${GET_POSTAL}`, () => {
const code = '5282';
expect(reducer(state, { type: GET_POSTAL, code })).toEqual({
...state,
code,
loading: true,
});
});
it(`should handle ${GET_POSTAL_SUCCESS}`, () => {
const payload = {
postalCode: {
postalInfo: {
postalCode: '5282',
},
},
};
expect(reducer(state, { type: GET_POSTAL_SUCCESS, payload })).toEqual({
...state,
postalInfo: payload.postalCode,
loading: false,
})
});