如何执行两个还原器以更新状态



我需要执行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的值不在状态。

如何在测试环境中使用操作更新状态,然后在此更新的还原器上执行第二个操作?

还原器是纯函数,它们采用stateaction,然后返回下一个state。您给出的示例期望该状态在第一个reducer呼叫之后进行更改。但这是一个纯粹的功能,它不会突变其返回的状态。如果第二个电话需要第一个状态通过第一个措施产生,则必须将其传递给还原器。

const stateAfterFirstAction = reducer(undefined, firstAction);
const stateAfterSecondAction = reducer(stateAfterFirstAction, secondAction);

最新更新