Reactjs 函数内部的Jest模拟函数

Reactjs 函数内部的Jest模拟函数,reactjs,jestjs,enzyme,Reactjs,Jestjs,Enzyme,因此,我试图测试是否在我的表单上调用了handlesubmit函数。它遇到了如下所示的条件并阻止表单提交。如何模拟内部的validate函数以返回空对象{}。这将使我的表格有效,然后按要求提交 验证是在Form.jsx中的表单组件之外定义的。我将它导出为export const validate={} handleSubmit=event=>{ const{args}=this.state; 让错误=验证(args); 常量isValid=isEmpty(错误) 如果(!isValid){ t

因此,我试图测试是否在我的表单上调用了handlesubmit函数。它遇到了如下所示的条件并阻止表单提交。如何模拟内部的validate函数以返回空对象{}。这将使我的表格有效,然后按要求提交

验证是在Form.jsx中的表单组件之外定义的。我将它导出为export const validate={}

handleSubmit=event=>{
const{args}=this.state;
让错误=验证(args);
常量isValid=isEmpty(错误)
如果(!isValid){
this.setState({args:args})
event.preventDefault()
}
this.setState({args:args})

}
不可能模拟在使用的同一模块中定义的函数。为了可模拟,它应该从另一个模块导入并用
jest.mock
模拟,或者用作某个对象上的方法并用
jest.spyOn
模拟

由于它与类组件一起使用,因此可以将其定义为方法:

validate() {...}

handleSubmit = event => {
    ...
    let errors = this.validate(args);
    ...
}
并在课堂上被嘲笑:

jest.spyOn(Form.prototype, 'validate').mockReturnValue(...);
或组件实例:

jest.spyOn(wrapper.instance(), 'validate').mockReturnValue(...);

如果
validate
可重用或与功能组件一起使用,则应将其移动到另一个模块。

这完全取决于
validate
的来源。你没有具体说明。请提供您的问题。抱歉,我已更新。谢谢!解释得很好。