Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用reduxsauce获得100%的测试覆盖率_Javascript_Reactjs_Redux_React Redux_Jestjs - Fatal编程技术网

Javascript 如何使用reduxsauce获得100%的测试覆盖率

Javascript 如何使用reduxsauce获得100%的测试覆盖率,javascript,reactjs,redux,react-redux,jestjs,Javascript,Reactjs,Redux,React Redux,Jestjs,我正在尝试使用Jest使用Redux(React Redux+reduxsaint)测试React应用程序。 我实施了以下方法: import { createActions, createReducer } from "reduxsauce"; /** * Action types & creators */ export const { Types, Creators } = createActions({ addSample: ["text"], removeSa

我正在尝试使用Jest使用Redux(
React Redux
+
reduxsaint
)测试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%——语句、函数、行); 在对覆盖率的反馈中,有人指出,在第16行和第20行,我没有对处理程序的声明执行测试
add()
remove()


我猜内部
reduxsauce
实现了带有一些
开关盒的Reducer,但我不知道如何测试这一部分,允许测试覆盖率标准,只要看看这一部分,就会明白为什么会出现问题(在这种情况下,Branchs标准中没有达到100%的覆盖率)

我们可以按如下方式阅读此语法:

函数add()
的声明具有以下条件

  • 如果在第一个参数中传递一个值,则假定
    状态
    将在函数范围中具有该值
  • 如果未传递值(或者如果传递的值是
    未定义的
    ),则假定
    状态
    将在功能范围中将值设置为
    初始状态
[了解有关此语法的更多信息]

由于声明了此条件,有必要测试这两种可能性,因为测试在分支标准中具有100%的覆盖率

e、 g:


你能更新你的问题以包含你的测试代码吗?很难说为什么你的测试没有看到完整的代码覆盖率。同时,我的回答谈到了如何测试reduxsauce,可能会有所帮助。谢谢Brian,我将编辑我的问题并添加更多细节。不过,我也找到了我问题的可能解决方案。老兄,我一直在想,我不会编辑这个问题,因为我的问题可以通过查看我编写的代码片段来解决。好吧,我会回答,希望这足以帮助社区。再次感谢
/* ... */ add(state = INITIAL_STATE, action) { /* ... */
/* ... */ remove(state = INITIAL_STATE, action) { /* ... */
it("should return INITIAL_STATE when passed undefined on parameter and sometingh on action",
 () => {
    expect(setCurrent(undefined, action)).toBe(INITIAL_STATE);
 }
);

it("should return 'test' when passed 'test' on parameter and sometingh on action", 
  () => {
    expect(setCurrent("test", action)).toBe('test');
  }
);