如何测试子组件是否已渲染?

2024-04-17

在酶中,您可以检查子组件是否存在,如下所示:

expect(wrapper.find(ChildComponent)).toHaveLength(1)

React 测试库中的这个测试相当于什么?我找到的所有在线示例都只涵盖了寻找 dom 元素的非常简单的测试 - 没有一个包含渲染子组件的示例。如何找到子组件?


您不应该检查您的子组件是否呈现,因为它正在测试实现细节(测试库不鼓励您这样做)。

您可以检查子组件中的一些文本是否已渲染,或者您可以将 data-testid 提供给子组件中的包装元素,然后使用 @testing-library/jest-dom 中的 .toBeInTheDocument

expect(getByText(/some text/i)).toBeInTheDocument();

or

expect(getByTestId('your-test-id')).toBeInTheDocument();

更新:示例

// Child Component
function ChildComponent() {
    return <div>Child Element</div>;
};

// Parent
export default function Parent() {
    return (
        <div className="App">
            <ChildComponent />
        </div>
    );
}

Test:

import { render } from "@testing-library/react";
import "@testing-library/jest-dom/extend-expect";
import Parent from "./App";

test("test child component", () => {
  const { getByText } = render(<Parent />);
  expect(getByText(/child element/i)).toBeInTheDocument();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试子组件是否已渲染? 的相关文章

  • 这种类型注释在没有 TypeScript 的 React 代码中如何工作?

    我在看这段代码示例 https reacttraining com react router web example auth workflow在 ReactRouter 页面上 这篇文章很有趣 const PrivateRoute com
  • webpack中动态加载外部模块失败

    我正在尝试建立以下架构 一个核心 React 应用程序 它具有一些基本功能 并且能够在运行时加载其他 React 组件 这些额外的 React 组件可以按需加载 并且它们在构建核心应用程序时不可用 因此它们不能包含在核心应用程序的捆绑包中
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • 在 React 中将模板分离到外部文件

    我正在为客户开发 ReactJS 应用程序 我希望客户端能够自定义应用程序中的一些配置和模板 所以我创建了一个config js file window APP CONFIG url example com template item di
  • 如何在reactjs中禁用未来日期?

    我没有使用任何日期选择器 代码仍然工作正常 到目前为止 我已经选择了输入类型 一切正常 现在我想禁用未来的日期 我怎么做 div div
  • 使用 Reactjs 获取滚动位置

    我使用reactjs并想要处理滚动click event 首先 我呈现了帖子列表componentDidMount 其次 通过click event在列表中的每个帖子上 它将显示帖子详细信息并滚动到顶部 因为我将帖子详细信息放在页面的顶部位
  • react-route,react-hot-loader.webpack(您无法更改 ;它将被忽略)

    这是我的第一个项目react react router react hot loader webpack dev server and webpack 当我更改react组件中的代码时 热加载器生效 但同时控制台告诉我一个警告 您无法更改
  • React 在同一组件中渲染多个模态

    我对 React 和一般编码都很陌生 我试图在同一组件中渲染多个模态 但它们都是同时渲染的 因此看起来所有链接都在最后一个模态中渲染文本 这是状态设置的地方 class Header extends React Component cons
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 打字稿 - 字符串'不可分配给类型'FC

    我收到以下错误 Type props PropsWithChildren lt amount number gt gt string is not assignable to type FC lt amount number gt Type
  • 如何在 React 组件测试中使用 data-testid 属性?

    我正在对一个简单的反应组件进行组件测试 我想渲染该组件 然后对其进行一些测试 问题是cy get 似乎没有找到基于的组件data testid属性 我用一个简单的方法测试了它div和div能找到就好了 我在检查时也注意到DOM在 cypre
  • React Context 的范围是什么?

    我不清楚在哪里Context可以在 React 应用程序中创建 我可以在组件树中的任何位置创建上下文吗 如果可以 该上下文的范围是否仅限于创建它的子级 或者 Context 本质上是全局的 我可以在文档中的哪里找到这个 案例 我在页面上多次
  • 将 firestore 中的数据分配给变量

    我尝试使用 get doc 函数将 firestore 数据库中的变量分配给它们所尊重的值 我注意到它不会分配或更新这些值 我尝试使用异步和等待 但似乎无法使其工作 getFromDatabase nameOfCollection name
  • React onSubmit e.preventDefault() 有时不起作用 + Axios

    现在我在 React 中面临这个奇怪的问题 其中带有 e preventDefault 的 onSubmit 函数有时会避免刷新页面 有时则不会 我创建了两个挂钩来跟踪上传的文件及其进度条 const uploadedFiles setUp
  • useLocation 挂钩 - 确定过去的位置

    根据 React Router 5 1文档 https v5 reactrouter com web api location应该可以看到 应用程序现在在哪里 你想让它去哪里 甚至它曾经在哪里 在我的应用程序中 我需要查看 它在哪里 我访问
  • Redux 状态在 mapStateToProps 中未定义

    我目前正在关注this http teropa info blog 2015 09 10 full stack redux tutorial html教程 我遇到了一些障碍mapStateToProps在下面的代码中 import Reac
  • React-redux useDispatch() 未捕获类型错误

    我正在尝试创建一个简单的组件来使用 React Redux 钩子分派操作useDispatch 我收到一个错误 我已将组件修剪到发生错误的位置 当调用 useDispatch 函数时会发生这种情况 import useDispatch fr
  • 仅显示某些路由的组件 - React

    我正在 React 中开发一个带有登录界面的网站 该网站显示一个自定义导航组件 但是我不希望它显示在主路线 即登录页面 上 但据我了解 静态组件不会在路线更改时重新呈现 这准确吗 我正在使用 React Router 来处理所有路由 这是我
  • HTMLImageElement 作为 React Child 无效

    我正在尝试异步加载图像 并且仅在加载图像后才将其显示在 React 应用程序中 componentDidMount const img new Image img onload gt this setState originalImage
  • 使react-leaflet能够离线使用

    我一直在使用反应传单 https github com PaulLeCam react leaflet图书馆 到目前为止运作良好 现在我希望网站预加载尽可能多的图块 以便网络应用程序 也是 PWA 可以在没有互联网的情况下使用 我找到了一些

随机推荐

  • 502 Kubernetes Ingress 网关错误

    我有一个 kubernetes 设置 其配置如下 kind Service apiVersion v1 metadata name myservice spec selector app my service ports protocol
  • 读取、表示和渲染地图数据的最佳方式是什么?

    我有兴趣编写一个简单的导航应用程序作为我的宠物项目 在搜索了免费地图数据后 我决定了美国人口普查局 TIGER http www census gov geo www tiger tgrshp2007 tgrshp2007 html2007
  • Android 6 (23) - 无需许可

    我坚持使用 Android 6 中的新权限模型 我在清单中定义了以下权限
  • 计算函数合理性的算法/蒙特卡罗方法

    我正在编写一个程序 尝试复制本文开头讨论的算法 http www stat stanford edu cgates PERSI papers MCMCRev pdf http www stat stanford edu cgates PER
  • 我将如何使用括号表示法中的单个变量来访问深度值?

    我想知道如何执行以下操作 我有以下数据 dta fielddata text1 4B030C2E 3D53 4DF8 A3535EF377B45DE5 text2 Unlabeled 我可以使用括号符号访问它 如下所示 var result
  • Google 表格中的正则表达式“NOT”(RE2)

    我想检查单元格中是否有一个单词而不是另一个单词 在这个帖子 https stackoverflow com questions 28775466 google sheet regexreplace match everything exce
  • 删除与某个模式匹配的多个文件

    我使用 Python 和 Django 制作了一个在线画廊 我刚刚开始添加编辑功能 从旋转开始 我使用 sorl thumbnail 按需自动生成缩略图 当我编辑原始文件时 我需要清理所有缩略图 以便生成新的缩略图 每张图片有三到四个 我针
  • Swift async/await 取代了 DispatchQueue.main.async

    在新的 Swift 5 5 中使用 async await 并发机制时如何返回主线程 我应该只用 MainActor 标记函数 类吗 我还能用吗DispatchQueue main async 会是正确的吗 因为新机制不使用 GCD 并且异
  • HABTM 与强参数的关联不会在 Rails 4 中保存用户

    用户模型 has and belongs to many events 事件模型 has and belongs to many users 用户控制器 params require user permit role event ids g
  • geoIP 从 ASP.NET 查找国家/地区

    我可以从 ASP NET 页面检索客户端的 IP 地址 至少是表面上的 IP 地址 我想知道是否有可以从代码隐藏访问的免费服务 当使用 IP 查询时 该服务将返回国家 地区 不需要城市 我无法使用基于 Web http 的服务 您必须手动输
  • 如何消除SQL中的NULL字段

    我正在为 SQL Server 2008 R2 开发 TSQL 查询 我正在尝试开发此查询来识别一条记录 客户 由于其中一些值为 NULL 因此我目前正在对大多数表执行 LEFT JOINS 但 LEFT JOIN 的问题是 现在我为某些客
  • Nestjs Apollo graphql上传标量

    我正在使用 Nestjs graphql 框架 我想使用 apollo 标量上传 我已经能够在另一个不包含 Nestjs 的项目中使用标量 schema graphql App module ts注册graphql GraphQLModul
  • 如何查询Firebase Firestore参考数据类型?

    我正在使用 Firestore参考 https firebase google com docs firestore manage data data types用于存储对用户的引用的数据类型 如下面的屏幕截图所示 用户参考 用户收藏 当我
  • Angular 4 + Electron - 如何运行应用程序并观察更改(实时重新加载)

    我正在使用 Angular 4 创建一个 Electron 应用程序 我如何设置它 以便它监视任何更改并实时重新加载它 包 json name angular electron version 0 0 0 license MIT main
  • 如何将网络音频流保存到文件(c++/java)

    是否有任何库或众所周知的方法来保存音频网络流 网络广播 mp3 流 以编程方式归档 您可以使用 libvlcVLC http www videolan org vlc 项目 这wiki http wiki videolan org Libv
  • 策略模式和访客模式有什么区别?

    我很难理解这两种设计模式 您能否给我上下文信息或示例 以便我可以得到清晰的想法并能够映射两者之间的差异 Thanks The 策略模式就像一个1 many关系 当存在一种类型的对象并且我想对其应用多个操作时 我使用策略模式 例如 如果我有一
  • mojoPortal 还是 Umbraco?

    我已经寻找免费 开源 ASP NET CMS 门户系统有一段时间了 并将其分为两个不同的系统 乌姆布拉科 http umbraco org http umbraco org 魔力门户 http www mojoportal com http
  • 如何让 ASP.NET DataPager 控件在 UpdatePanel 中工作?

    我有一个顶部有参数的搜索页面 底部有一个带有结果的搜索按钮 整个内容都包含在母版页内的更新面板中 单击搜索按钮后 它会显示第一页 但是 如果您单击 DataPager 上的下一个按钮 它不会显示第二页 它显示第二页没有结果 任何帮助将不胜感
  • C++ 和 Java 中异常处理的区别?

    在Java中 如果特定的代码行导致程序崩溃 那么异常就会被捕获并且程序会继续执行 但是 在 C 中 如果我有一段代码导致程序崩溃 例如 try int x 6 int p NULL p reinterpret cast
  • 如何测试子组件是否已渲染?

    在酶中 您可以检查子组件是否存在 如下所示 expect wrapper find ChildComponent toHaveLength 1 React 测试库中的这个测试相当于什么 我找到的所有在线示例都只涵盖了寻找 dom 元素的非常