Тест Реакт-Редуктор с использованием Jest Enzyme - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть такой редуктор в моем приложении реакции.

reducer.ts

1. export const clearErrors = (state, action) => {
2.   if (action.payload.cardType === CARD_TYPES.REWARD) {
3.    return {
4.      ...state,
5.      errors: []
6.    };
7.   } else {
8.    return state;
9.   }
10. };

Чтобы описать это в тестовых случаях, я написал что-то вроде этого, используя шутки и энзимы. Тестовый пример работает без ошибок.

reducer.test.ts

it("should clear out error codes", () => {
    const state = clearErrors(CARD_TYPES.REWARD);
    const expectedState = {
      type: CLEAR_ERRORS,
      payload: { cardType: "REWARD" }
    };
    expect(state).toEqual(expectedState);
  });

Однако, когда я запускаю test-cov, он говорит, что строки 2, 3 и 8 не покрываются , Как покрыть условие if else в файле редуктора.

1 Ответ

1 голос
/ 24 апреля 2020

Я думаю, что ваш тестовый пример не тестируется правильно, clearErrors принимает два аргумента: state и action, но вы передаете только CARD_TYPES.REWARD в функцию clearErrors.

Таким образом, вы просто должны предоставить правильные юнит-тесты для каждого из этих условий:)

Строка 2: if (action.payload.cardType === CARD_TYPES.REWARD) {

Строка 3: return {

  it("should clear out error codes", () => {
    const action = { payload: { cardType: CARD_TYPES.REWARD } };
    const state = clearErrors(initialState, action);
    const expectedState = { ... };
    expect(state).toEqual(expectedState);
  });

Строка 8: return state;

  it("should not clear out error codes", () => {
    const action = { payload: { cardType: 'other' } };
    const state = clearErrors(initialState, action);
    expect(state).toEqual(initialState);
  });
...