Как выполнить два редуктора для обновления состояния - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно выполнить reducer, чтобы изменить state.Мне нужно это обновленное state для моего второго reducer для работы.Он опирается на изменения, сделанные в государстве.Однако я не уверен, как сначала обновить state в тесте, а затем запустить второй reducer.

it('returns the correct sate', () => {
    const firstAction = {
        type: FOO,
        ...
    };

    const secondAction = {
        type: BAR,
        ...
    }

    reducer(undefined, firstAction); // <- Execute the first action
    expect(reducer(undefined, secondAction)) // <- throws an error because the values secondAction relies on are not there
        .toEqual(initialState
            ....);
});

Это не работает, как ожидалось.reducer(undefined, firstAction); не обновляет состояние, а reducer(undefined, secondAction) выдает ошибку, потому что значения, на которые он опирается update, отсутствуют.

Как обновить состояние с помощью действия в тестовой среде, а затем выполнить второе действие на этом обновленном редукторе?

1 Ответ

0 голосов
/ 19 февраля 2019

Редукторы являются чистой функцией, они принимают state и action и возвращают следующее state.В приведенном вами примере ожидается, что состояние изменится после первого вызова reducer.Но это чистая функция, она не изменяет состояние, а возвращает его.Если второй вызов требует первого состояния, созданного первым действием, вы должны передать его вашему редуктору.

const stateAfterFirstAction = reducer(undefined, firstAction);
const stateAfterSecondAction = reducer(stateAfterFirstAction, secondAction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...