在我的应用程序的多个位置,存在一些错误:人们编写了不完全精简的化简器,还化简器通过处理现有对象来修改现有状态。
现在,在修复该问题之前,我想编写测试来证明reducer具有错误并修改了现有状态。
我可以通过执行许多断言来手动完成此操作,但是也许有更好的方法可以做到这一点。在Jest
的上下文中是否有匹配器/库可以帮助我解决这个问题?
答案 0 :(得分:0)
我通常使用以下库:redux-testkit,您可以轻松测试化简器,如果某些化简器发生突变,则测试将失败。还可以测试动作(按重击)和选择器。这是一个示例:
test("when SET_FORM_VALUE, should set formValues", () => {
const previousState = { formValues: null };
const fakeFormValues = {
fakeValue: "fake-value"
};
Reducer(reducer)
.withState(previousState)
.expect({ type: SET_FORM_VALUE, payload: fakeFormValues })
.toChangeInState({
formValues: fakeFormValues
});
});
此外,您可以使用deep-freeze之类的另一个库。这一步深深地应用了Object.freeze
。如果在您要测试的方法中修改了对象,则测试会引发错误。
test("should not be modified", () => {
const obj = { value: 5 };
deepFreeze(obj);
obj.value = 6;
});