getByText 找不到该元素

Joh*_*abb 3 unit-testing reactjs jestjs react-testing-library

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

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

测试失败并显示:

xxxxxx.getByText('Click here')
Run Code Online (Sandbox Code Playgroud)

但如果“单击此处”只是该文本,则效果很好

  • 有没有一种方法可以进行部分搜索?

  • mar*_*ias 16

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

    x.getByText(/click here/i)
    
    Run Code Online (Sandbox Code Playgroud)

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


    关于查询 > 使用查询

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

    TextMatch > Precision

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

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