react-testing-library - 检查 HTML 元素类型以获取 React 测试库的 getByText 的结果?
问题描述
我可以通过它的文本找到一个元素并检查它是否是一个链接:
const Link = Parent.getByText('This is a link', { exact: false });
expect(Link).toHaveAttribute('href', 'www.somewhere.com');
如何检查这个其他元素(我通过文本找到)不是链接?
const NotALink = Parent.getByText('Not a link', { exact: false });
解决方案
测试库文档有一个优先级,他们推荐的第一个查询是queryByRole
,您可以在其中按特定角色查询,也可以按名称查询,这是您的情况。
你可以做:
expect(screen.getByRole('link', { name: /this is a link/i })).toBeInTheDocument();
expect(screen.queryByRole('link', { name: /not a link/i })).toBe(null);
请注意,如果元素不存在,则需要执行 queryBy,因为 getBy 查询将引发错误并使您的测试失败。
推荐阅读
- wget - 使用 Wget -i 重命名下载的文件
- intellij-idea - IntelliJ:无法解析“org.apache.commons.lang3.tuple.ImmutablePair”中的 smybol
- hyperledger-fabric - configtx.yaml 中的 Hyperledger Fabric ACL
- java - Spring 的 @Autowire 注释在 JpaRepository 上返回 null
- c# - 什么是 CLR 循环优化行为?
- matlab - 从结构的多个字段中提取行
- java-8 - Java8 中引入了哪些新的 JVM 参数?
- batch-file - 批处理:将多个子文件夹(同名)中的所有文件移动到父文件夹中
- html - HTML 元素的默认规则 - 它是 HTML 标准的一部分吗?
- node.js - ejs在脚本标签内显示错误