reactjs - 当类名不是静态的时,如何选择节点进行酶测试?
问题描述
我想使用 Enzyme 测试以下组件:
export class Header extends React.Component {
render() {
const { classes, numOrders } = this.props;
return (
<header>
<div className={classes.numOrders}>
{numOrders}
</div>
...
</header>
);
}
}
选择div
显示订单数量的最佳方法是什么。请注意,类名是动态生成的(使用 JSS),所以这不是一个好的选择。有没有其他合理的方法/最佳实践来做到这一点?(我不想在这些节点上添加 CSS #id。)
解决方案
我喜欢在这里做的是使用data
属性进行测试,然后在 Enzyme 中使用属性选择器。
它看起来像这样:
export class Header extends React.Component {
render() {
const { classes, numOrders } = this.props;
return (
<header>
<div className={classes.numOrders} data-testid="SomeName">
{numOrders}
</div>
...
</header>
);
}
}
Enzyme 中的选择器如下:
wrapper.find('[data-testid="SomeName"]');
更多信息:https ://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html
推荐阅读
- tomcat9 - org.apache.jasper.JasperException:在第 [38] 行处理 [index.jsp] 时发生异常
- sql - 删除插入查询中的引用字符串
- android - 娱乐音乐播放器应用程序后在哪里设置媒体样式通知栏
- flutter - NoSuchMethodError 被抛出构建 Home(dirty, state: HomeState#0a71e): The getter 'displayName' was called on null
- azure - 可视化选项在 Azure 机器学习服务上未激活
- java - 通过 Amazonica 或 Cognitect AWS API 连接到进程内 DynamoDBLocal?
- docker - 如何将 GeoDjango 添加到我的 alpine dockerfile?
- javascript - 如何将外部字体添加到使用 JavaScript 中的 CSS 对其进行自定义的 iframe 中?
- javascript - 为什么我的 javascript 表单验证不起作用?
- javascript - iOS Progressive Web App 暗模式启动图像?