javascript - 如何对使用 Jest 和 Enzyme 调用的 jquery 进行单元测试?
问题描述
我们在React Component didMount 生命周期方法中涉及jquery事件处理程序。
代码有点像下面:
export default class Home extends Component {
componentDidMount() {
Usabilla("SMART_MODEM");
$( ".option-label" ).parent().on( "click", function() {
console.log(">>>>>>>> Click Happening.")
let outerObject = this;
$( ".selected" ).each(function() {
if($(outerObject).text() !== $(this).text() ) {
$(this).click();
}
});
});
});
}
render() {
// Some React Render Code Hre.
}
}
我需要增加测试覆盖率和测试$( ".option-label" ).parent().
方法。
如何使用Jest、Enzyme 和其他相关技术对这种方法进行单元测试?
解决方案
我建议这个没有 jQuery 的纯 React 实现(不实现 onClick 的整个逻辑)。所以这很容易测试:
state = {
labels: [] // filled with some async operation
}
handleLabelClick = () => {
console.log(">>>>>>>> Click Happening.")
}
renderOptionLabels = () => (
const { labels } = this.state;
<ul>
{labels.length && labels.map(label => (
<li className="option-label" key={label.id} onClick={this.handleLabelClick}>{label.text}</li>
))}
</ul>
)
render() {
...
{this.renderOptionLabels()}
...
}
推荐阅读
- asp.net-core-webapi - 使用 ftp 上传到 web api
- node.js - 从 nodejs 应用程序写入 kubernetes 参数存储
- git - 将一个功能分支与另一个合并,可以选择在没有提交历史的情况下进行合并
- javascript - 如何让表单提交事件监听器在 js 中工作?
- r - 如何将一列中的月份和年份分隔为R中的两列
- python - python中的饼图
- javascript - Puppeteer:登录对话框上的访问字段
- python - PhotoImage 没有这样的文件或目录
- android - Flutter 应用程序返回“在 null 上调用了 getter 'length'”
- javascript - 如何在按钮单击事件中获取图像?