我需要执行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
状态的值不存在。
如何在测试环境中使用操作更新状态,然后在此更新的reducer上执行第二个操作?
答案 0 :(得分:0)
reducer是纯函数,它们采用state
和action
并返回下一个state
。您给出的示例期望状态在第一次reducer
调用之后发生变化。但这是一个纯函数,它不会改变返回它的状态。如果第二个调用要求第一个操作产生第一个状态,则必须将其传递给减速器。
const stateAfterFirstAction = reducer(undefined, firstAction);
const stateAfterSecondAction = reducer(stateAfterFirstAction, secondAction);