Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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测试React组件';s法_Javascript_Reactjs_Testing_Jestjs_Enzyme - Fatal编程技术网

Javascript 使用Jest测试React组件';s法

Javascript 使用Jest测试React组件';s法,javascript,reactjs,testing,jestjs,enzyme,Javascript,Reactjs,Testing,Jestjs,Enzyme,我有一个容器组件,负责为子表单组件方法提供保存功能。我试图使用Jest&Enzyme(我想我需要Enzyme?)来测试子组件是否触发从父组件传递的函数。这两种方法看起来是这样的: 类父级扩展组件{ handleSave=(某些数据)=>( /*用一些数据做一些ajax*/ ) render(){ 返回( ) } } 类ChildComponent扩展组件{ render(){ 提交 } }问题在于simulate并没有真正触发click事件,而是运行wrapper.prop('click')(

我有一个容器组件,负责为子表单组件方法提供保存功能。我试图使用Jest&Enzyme(我想我需要Enzyme?)来测试子组件是否触发从父组件传递的函数。这两种方法看起来是这样的:

类父级扩展组件{
handleSave=(某些数据)=>(
/*用一些数据做一些ajax*/
)
render(){
返回(
)
}
}
类ChildComponent扩展组件{
render(){
提交
}

}
问题在于simulate并没有真正触发click事件,而是运行
wrapper.prop('click')()
。形成文件:

普通哥特

目前,浅层渲染器的事件模拟不可用 在真实的环境中,按照人们通常期望的方式传播。作为一个 结果,必须在具有 事件处理程序集

即使这个名字意味着这是一个 实际事件,
.simulate()
实际上将以组件的道具为目标 根据你给它的事件。例如,
.simulate('click')
将 实际获取
onClick
prop并调用它


因此,您可以运行
component.find('form').simulate('submit')
component.find('form').prop('onSubmit')()
问题在于,simulate并不是真正触发click事件,而是运行
wrapper.prop('click')()
。形成文件:

普通哥特

目前,浅层渲染器的事件模拟不可用 在真实的环境中,按照人们通常期望的方式传播。作为一个 结果,必须在具有 事件处理程序集

即使这个名字意味着这是一个 实际事件,
.simulate()
实际上将以组件的道具为目标 根据你给它的事件。例如,
.simulate('click')
将 实际获取
onClick
prop并调用它


因此,您可以运行
component.find('form').simulate('submit')
component.find('form').prop('onSubmit')()

好的,这解决了提交问题(谢谢),但我仍然不确定如何正确地监视我的handleSave方法。您主要测试这一行时存在一些缺陷`component.handleSave=jest.fn()`。你不应该测试你的内在行为,而应该测试外在的东西。在您的情况下,我假设您将使用一些导入的模块来执行实际请求。您必须对此进行模拟和监视。好的,这解决了提交问题(谢谢),但我仍然不确定如何正确监视我的handleSave方法。您主要测试这行代码“component.handleSave=jest.fn()”,其中存在一些缺陷。你不应该测试你的内在行为,而应该测试外在的东西。在您的情况下,我假设您将使用一些导入的模块来执行实际请求。你必须嘲笑和监视这件事。