javascript - 如何在 React、Jest 和 Enzyme 中查找包含特定值的 div 的计数
问题描述
我正在寻找使用 React、Jest 和 Enzyme 的解决方案。我是这些技术的新手。
我可以运行一些简单的测试。现在这是我要测试的内容:
<div className="trow">
<div className="tcolid" >101</div>
<div className="tcolname">Joe</div>
<div className="tcolgender">M</div>
</div>
<div className="trow">
<div className="tcolid" >102</div>
<div className="tcolname">Abc</div>
<div className="tcolgender">F</div>
</div>
<div className="trow">
<div className="tcolid" >103</div>
<div className="tcolname">Xyz</div>
<div className="tcolgender">F</div>
</div>
...
...
我的 React 组件使用来自 rest api 的数据。API 可以返回多个男性和/或女性记录。我的要求是确保在 UI 中只呈现一个男性员工。我已经实现了 - 不是问题。
当我使用 Jest 和 Enzyme 编写测试时,我想检查当我渲染时我只渲染一个具有值“M”的 html 元素。
这是我尝试过的 - Jest / Enzyme 不喜欢它。
expect (wrapper.find("div.tcolgender").text()).toEqual("M").toHaveLength(1);
这不起作用。我查看了 Enzyme API - 没有找到任何“计数”或类似的方法。注意 - 这是“完整”渲染,而不是“浅”渲染。
解决方案
您可以编写选择器以将所有div
s 与M
内容匹配
const children = wrapper.find('div.tcolgender[children="M"]')
并断言孩子的长度为一
expect(children).toHaveLength(1);
推荐阅读
- python-3.x - python3中的urllib异常处理
- reactjs - 如何让服务器将远程 json 对象返回给客户端?反应/快递/web3
- angularjs - 使用 Let's Encrypt 将 HTTPS 应用于我的服务器时发生 CORS 错误
- javascript - 来自 MySql 数据库的 HERE 地图集标记
- ios - 在测试中的两个 iOS 应用程序之间共享信息
- ionic-framework - 没有铬的离子单元测试
- android - Android:片段替换重复
- javascript - 我想添加一个计时器,直到登录弹出?
- python - Python OPenCV Hough Circle 需要很长时间才能从网络摄像头加载图像
- android - 如何将图像附加或匹配到文本