【发布时间】:2019-11-06 18:08:44
【问题描述】:
我正在尝试使用 Jest 使用 Redux (react-redux + reduxsauce) 测试 React 应用程序。
我实现了以下方法:
import { createActions, createReducer } from "reduxsauce";
/**
* Action types & creators
*/
export const { Types, Creators } = createActions({
addSample: ["text"],
removeSample: ["id"]
});
/**
* Handlers
*/
export const INITIAL_STATE = [];
export function add(state = INITIAL_STATE, action) {
return [...state, { id: Math.random(), text: action.text }];
}
export function remove(state = INITIAL_STATE, action) {
return state.filter(sample => sample.id !== action.id);
}
/**
* Reducer
*/
export default createReducer(INITIAL_STATE, {
[Types.ADD_SAMPLE]: add,
[Types.REMOVE_SAMPLE]: remove
});
这个实现允许我在组件之间使用 Redux 存储。
但是,在测试中我无法达到 100% 的覆盖率,因为仅在分支标准中我是覆盖率 0%(在其他标准中我达到 100% - 语句、函数、行);
根据 Coverage 的反馈,在第 16 行和第 20 行,我没有在声明处理程序 add() 和 remove() 时执行测试。
我猜在内部 reduxsauce 用一些 switch case 实现了 Reducer,但我不知道如何测试这部分以允许测试覆盖标准
【问题讨论】:
-
您能否更新您的问题以包含您的测试代码?很难说为什么你的测试没有得到完整的代码覆盖率而没有看到它。与此同时,我的回答 here 谈到了如何测试 reduxsauce 并且可能会有所帮助。
-
谢谢布赖恩,我会编辑我的问题并添加更多细节。但是,我也找到了解决问题的可能方法。
-
哥们,我一直在考虑,我不会编辑问题,因为我的问题只要看我写的代码sn-ps就可以解决。好吧,我会回答并希望它足以帮助社区。再次感谢
标签: javascript reactjs redux react-redux jestjs