【问题标题】:getByText doesn't find the elementgetByText 找不到元素
【发布时间】:2021-04-24 00:37:15
【问题描述】:

我想看看是否至少呈现了部分文本..

<li>
   Click here &nbsp;
   <a
     id="myLink"
     className="xxxxx"
     target="_blank"
     rel="noreferrer"
     href="https://www.aaa.com"
   >
      to open xxx.
   </a>
</li>

测试失败:

xxxxxx.getByText('Click here')

但如果“单击此处”只是该文本的文本,则可以正常工作

  • 有没有办法进行部分搜索?
  • 【问题讨论】:

      标签: reactjs unit-testing jestjs react-testing-library


      【解决方案1】:

      如果您将字符串传递给getByText(),它将查找该确切字符串。您可以改为传递正则表达式来查找部分匹配:

      x.getByText(/click here/i)
      

      这里我使用i 标志进行不区分大小写的搜索,但您也可以传递区分大小写的正则表达式:/Click here/


      来自About Queries > Using Queries

      查询的主要参数可以是 一个字符串正则表达式, 或功能。 还有一些选项可以调整节点文本的解析方式。 见TextMatch 有关可以传递给查询的文档。

      来自TextMatch > Precision

      采用TextMatch 的查询 也接受一个对象作为最终参数 可以包含选项 影响字符串匹配精度的:

      • exact:默认为true;匹配完整的字符串,区分大小写。当为 false 时,匹配子字符串并且不区分大小写。
        • exactregexfunction 参数没有影响。
        • 在大多数情况下,使用正则表达式而不是字符串可以让您更好地控制模糊匹配,应该优先于 { exact: false }

      【讨论】:

        猜你喜欢
        • 2017-01-06
        • 2014-01-27
        • 2018-03-08
        • 2017-08-30
        • 2017-12-21
        • 2019-01-02
        • 2021-08-17
        • 2021-10-24
        • 2017-05-06
        相关资源
        最近更新 更多