reactjs - 即使 screen.debug() 显示文本存在,React 测试库也无法找到文本

标签 reactjs jestjs react-testing-library

简而言之,如果我通过它的标签抓取屏幕的一部分:

const foo = screen.getByLabelText('Some Label');

我可以看到我感兴趣的元素存在于输出中:
debug(foo);
...
<div
  class=" css-15zcpdi-NoOptionsMessage"
>
   Something went wrong
</div>

但是,如果我在屏幕中搜索“出现问题”:
screen.getByText('Something went wrong');

RTL声称它找不到它:
TestingLibraryElementError: Unable to find an element with the text: Something went wrong. ...

我一定在这里做错了什么..什么?

最佳答案

我有一个类似的问题。我正在使用自定义渲染方法将我的组件包装在 Redux Provider 中。然后做一些简单的事情,比如:expect(screen.getByText(/been the victim of bank fraud/i)).to.exist;失败:

TestingLibraryElementError: Unable to find an element with the text: /been the victim of bank fraud/i. This could be because the text is broken up by multiple elements. In this case, you can provide a function for your text matcher to make your matcher more flexible.

<body />
那个<body />表示没有渲染任何内容。但是,做 screen.debug()就在它起作用并显示我希望看到的所有 DOM 之前。
最后,使用 getByText()从我的渲染方法工作得很好。
我也确定我在这里做错了什么。

关于reactjs - 即使 screen.debug() 显示文本存在,React 测试库也无法找到文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62225194/

相关文章:

css - 内联样式 react 元素宽度

reactjs - 是什么导致 JSS 错误 "<Hook/>' s styles 函数不依赖于 "theme"参数”?

javascript - 调试时,我可以从浏览器控制台访问 Redux 存储吗?

reactjs - 使用 babel-jest 来开 Jest 但仍然出现语法错误

javascript - 使用 axios 执行经过身份验证的请求时,Jest 返回 "Network Error"

reactjs - 如何使用 react-testing-library 对数组作为 prop 进行单元测试

reactjs - 如何在 redux 工具包中模拟存储

reactjs - 范围错误: Invalid string length with jest and @testing-library/react

javascript - React + MobX,用户认证,渲染错误

javascript - 如何将数组与 setState 一起使用?