javascript - 在 React JS 中,如何对容器中的函数进行单元测试?
问题描述
我正在尝试模拟单击按钮并测试基于该单击发生的情况。我尝试了模拟功能。但是没有用。我们如何测试函数内部的语句?
我尝试模拟一个函数以查看它是否已被调用。但我总是得到未调用的模拟函数
updateSelect =(e, model) => {
window.alert('test');
const value = e.type === "keyup" ?
e.target.parentNode.childNodes[2].innerText : e.target.innerText;
if(!isEmpty(value)){
this.setState({text: value});
this.props.returnedValue({name : model, value});
}
}
<button className="test" onClick={(e)=>this.updateSelect(e, model)}>Click</button>
我希望要么应该调用函数,要么必须执行函数中的至少几条语句
解决方案
您不能模拟组件内部的函数。您必须通过类名或元素获取元素并模拟点击事件。在模拟点击事件时,请确保您传递了 2 个参数(模拟 2 个参数并传递它)。希望您使用的是 Enzyme 和 Jest/Mocha。供您参考链接。
同样在断言中检查函数的预期输出(状态中的值等)并且不检查函数是否被调用。
推荐阅读
- flutter - Flutter:无法从 API 加载特定数据
- python - Python:将参数传递给类中的方法
- php - 计算表中的行数并更改单列的宽度..?
- amazon-web-services - 适用于 VOD 直播的 AWS MediaLive
- rest - Fuse Karaf rest-dsl-simple 丢失
- python - 无法通过 WSL 使用 conda 显示 matplotlib 的输出
- c - 使用 CMake 编译项目
- bash - 如何从 bash 拦截命令标准输入和标准输出?
- javascript - 获取隐藏按钮元素的选择器
- c - 来自 fopen_s 的莫名其妙的“无效参数”错误