Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 如何使用Ezyme和Jest测试自定义钩子事件?(使用按键)_Javascript_Reactjs_Jestjs_React Hooks - Fatal编程技术网

Javascript 如何使用Ezyme和Jest测试自定义钩子事件?(使用按键)

Javascript 如何使用Ezyme和Jest测试自定义钩子事件?(使用按键),javascript,reactjs,jestjs,react-hooks,Javascript,Reactjs,Jestjs,React Hooks,如何使用Ezyme和Jest测试自定义钩子事件?(使用按键) 我当前的自定义挂钩:(获取键盘用户事件并更新按键) import React,{useffect,useState}来自“React” const useKeyPress=()=>{ const[keyPress,setKeyPress]=使用状态(“”); //如果按下的键是我们的目标键,则设置为true const downHandler=(事件)=>{ setKeyPress(事件代码); } 常量upHandler=()=>{

如何使用Ezyme和Jest测试自定义钩子事件?(使用按键)

我当前的自定义挂钩:(获取键盘用户事件并更新按键)

import React,{useffect,useState}来自“React”
const useKeyPress=()=>{
const[keyPress,setKeyPress]=使用状态(“”);
//如果按下的键是我们的目标键,则设置为true
const downHandler=(事件)=>{
setKeyPress(事件代码);
}
常量upHandler=()=>{
设置按键(“”);
};
useffect(()=>{
addEventListener('keydown',downHandler);
addEventListener('keyup',upHandler);
return()=>{
removeEventListener('keydown',downHandler);
removeEventListener('keyup',upHandler);
};
}, [])
返回([keyPress]);
}
导出默认使用按键;

有什么想法吗?

谢谢@Tom,我找到了反应测试库的解决方案

从“/../src/component/useKeyPress/useKeyPress”导入useKeyPress;
从'@testing library/react hooks'导入{renderHook,act}
从'@testing library/react'导入{firevent}
测试('火灾输入键盘事件',()=>{
const{result}=renderHook((()=>useKeyPress())
行动(()=>{
keyDown(窗口,{key:'Enter',code:'Enter'});
})
expect(result.current.keyPress).toBe('Enter');
});

测试按键按下的结果。与前端的UI更改类似,如果在按键关闭事件中发生UI更改。如果您愿意使用另一个测试库。使用这个很棒的用户事件加载项库尝试react测试库。它基本上是为编写这样的测试而设计的。