reactjs - 使用点符号测试 React 标签
问题描述
我有这个使用语义 UI 标签的简单反应组件:
render() {
return (
<Card.Meta ref="CardStatusComponent123" className={'float small ' + this.props.align + this.props.statusClassName}>
{this.props.statusText}
</Card.Meta>
);
}
我在 Jest 和 Enzyme 中编写了一个测试来测试组件:
describe('CardStatusComponent', () => {
it('displays prop text', () => {
const props = {
statusText: 'Available',
statusClassName: ' green ',
align: 'left',
};
const wrap = shallow(<CardStatusComponent {...props} />);
expect(wrap.find("Card.Meta").at(0).hasClass('green')).toEqual(true)
});
});
运行 jest 时出现的错误是:
方法“hasClass”旨在在 1 个节点上运行。找到了 0 个。
我知道这是因为标签名称用点分隔,因为如果我用 div 标签替换标签,它就可以工作。我试过分别访问“卡”和“元”,但在谷歌上找不到任何东西。
谁能向我解释如何在 Jest 和 Enzyme 中使用点符号测试标签?
解决方案
通过这样做wrap.find("Card.Meta")
,您试图找到displayName
不是“Card.Meta”的。
改为这样做:
import Card from "..."
...
expect(wrap.find(Card.Meta) ... )
推荐阅读
- javascript - 平面列表滚动时响应触摸事件的延迟
- javascript - 使用 Ajax 将 Javascript 数组发送到 PHP(无法从 PHP 中回显数组)
- python - 本地模块导入不起作用 - 未解决的参考
- laravel - 用 Blade 组件替换 Vue 组件,完全可以吗?
- php - 增加 Woocommerce 属性值长度
- xamarin - ContentView 作为具有自己 ViewModel 的控件
- scala - Scala递归头尾模式匹配
- jenkins - 詹金斯:无论结果如何,在作业结束时执行shell脚本
- mapbox - 显示集群中的累积属性
- javascript - 等待所有 url 完成写入