Javascript 使用Jest测试React组件';s法
我有一个容器组件,负责为子表单组件方法提供保存功能。我试图使用Jest&Enzyme(我想我需要Enzyme?)来测试子组件是否触发从父组件传递的函数。这两种方法看起来是这样的: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')(
类父级扩展组件{
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()”,其中存在一些缺陷。你不应该测试你的内在行为,而应该测试外在的东西。在您的情况下,我假设您将使用一些导入的模块来执行实际请求。你必须嘲笑和监视这件事。