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(“我的头衔”);