Я недавно начал использовать Immer в редукторных редукторах в своем приложении реакции, так как в них много вложенных состояний. (давайте избегать того факта, что эти вложения могут быть решены с помощью вспомогательных редукторов).
Использование Immer для меня очевидно, но как только я начал писать юнит-тесты с шуткой, я начал задаваться вопросом, следует ли мне избегать использования Immer в тестах?
Давайте рассмотрим базовый пример редуктора:
export default function (state = initialState, action) {
return produce(state, (draftState) => {
switch (action.type) {
case MY_TYPE:
draftState.some.nested.flag = true;
break;
}
});
}
тогда мой тест, который также использует Immer
it('should handle MY_TYPE', () => {
const storeState = reducer(initialState, {
type: MY_TYPE
});
const newState = produce(initialState, (draftState) => {
draftState.some.nested.flag = true;
});
expect(storeState).toEqual(newState);
});
Таким образом, мой вопрос заключается в том, чтобы я не использовал Immer производить в тестах и делать копию вложенного объекта вручную с использованием синтаксиса распространения? Что-то вроде:
.toEqual({
...initialState,
some: {
...initialState.some,
nested: {
...initialState.some.nested,
flag: true
}
}
})
Так есть ли какие-нибудь подводные камни при использовании Immer в тестах?