Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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 如何使用Jest-酶测试mapStateToProps中的方法_Javascript_Reactjs_Ecmascript 6_Jestjs_Enzyme - Fatal编程技术网

Javascript 如何使用Jest-酶测试mapStateToProps中的方法

Javascript 如何使用Jest-酶测试mapStateToProps中的方法,javascript,reactjs,ecmascript-6,jestjs,enzyme,Javascript,Reactjs,Ecmascript 6,Jestjs,Enzyme,我无法增加此行handleSave的覆盖率,我正在将其作为prop传递给我的组件。但是,我正在从测试用例中的容器文件导入mapstatetops,并使用.toBeTruthy()验证测试用例 这是我代码的要点 export const mapStateToProps = (state, ownProps) => { return { handleSave: title => ownProps.history.push(setTitle(title)), }; };

我无法增加此行
handleSave
的覆盖率,我正在将其作为
prop
传递给我的组件。但是,我正在从测试用例中的容器文件导入
mapstatetops
,并使用
.toBeTruthy()
验证测试用例

这是我代码的要点

export const mapStateToProps = (state, ownProps) => {
  return {
    handleSave: title => ownProps.history.push(setTitle(title)),
  };
};
这是我写的测试用例

it('mapStateToProps test case', () => {
  const result = mapStateToProps(state, ownProps);
  expect(result.handleSave).toBeTruthy();
});

有人能帮忙吗?我应该怎么做才能覆盖
handleSave

您可以模拟
ownProps
并测试模拟功能,如:

const mockFn=jest.fn();
const ownProps={
历史:{
推送:mockFn
}
}
const result=mapStateToProps(状态,ownProps);
//现在调用handlesave函数
结果。handleSave(“我的头衔”);
//然后如下所示:
//这将确保您的函数正在调用ownProps历史推送方法。
expect(mockFn).toBeCalled();
//检查函数只调用了一次
expect(mockFn.mock.calls.length).toBe(1);
//这是为了检查是否传递了正确的参数。请确保传入“setTitle”函数返回的内容
expect(mockFn.mock.calls[0][0])toBe(“我的头衔”);