何时在带有react-dom的jest单元测试中使用act()

2024-02-19

根据反应单元测试文档:

act()

要为断言准备组件,请包装代码渲染 它并在 act() 调用中执行更新。这使得你的测试 运行起来更接近 React 在浏览器中的工作方式。

但测试在这两种情况下都运行得很好:

没有 act()

it('Should return some text', () => {
  render(<TestComponent />, container);
  expect(container.textContent).toBe('some text');
});

与行为()

it('Should return some text', () => {
  act(() => {
    render(<TestComponent />, container);
  });

  expect(container.textContent).toBe('some text');
})

问题是:act() 到底有什么作用,什么时候应该使用它?


来自act() https://reactjs.org/docs/testing-recipes.html#act docs:

在编写 UI 测试时,渲染、用户事件或数据获取等任务可以被视为与用户界面交互的“单元”。 React 提供了一个名为 act() 的帮助器,它确保在做出任何断言之前,与这些“单元”相关的所有更新都已被处理并应用到 DOM

进一步阅读和示例:https://github.com/mrdulin/react-act-examples/blob/master/sync.md https://github.com/mrdulin/react-act-examples/blob/master/sync.md

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时在带有react-dom的jest单元测试中使用act() 的相关文章

  • 如何从 Visual Studio 以调试模式运行 NUnit?

    我最近正在为我一直在研究的一些 C 构建一个测试框架 我在工作区中设置了 NUnit 和一个新项目来测试该组件 如果我从 Nunit v2 4 加载单元测试 一切都会很好 但我已经到了在调试模式下运行并设置一些断点非常有用的地步 我已经尝试
  • 对 Java Servlet 进行单元测试

    我想知道对 servlet 进行单元测试的最佳方法是什么 只要内部方法不引用 servlet 上下文 测试内部方法就不是问题 但是测试 doGet doPost 方法以及引用上下文或使用会话参数的内部方法呢 有没有办法简单地使用经典工具 例
  • 模拟类:Mock() 还是 patch()?

    我在用mock http www voidspace org uk python mock index html使用Python 想知道这两种方法中哪一种更好 阅读 更Pythonic 方法一 只需创建一个模拟对象并使用它 代码如下 def
  • 运行 tsc(TypeScript 编译器)时如何复制 dist 或 build 文件夹中的 package.json

    我有一个 TypeScript React 组件 它使用package json文件 参见屏幕截图 然后我运行tsc为了在我的中将其转译为 es5dist文件夹但package json文件没有被复制 请注意 在屏幕截图中 我手动将其复制到
  • CORS 问题从 React 应用程序 > 节点服务器 > 重定向到 Google OAuth2 身份验证发出 AJAX 请求

    大家好 过去两天我一直在绞尽脑汁研究这个问题 但没有运气 这是我在尝试从我的 React 应用程序 localhost 3000 使用 Google Oauth2 Passport 策略进行身份验证时遇到的错误 我正在 localhost
  • 计算行:如何使用 AG Grid 根据同一列中其他行的值计算特定列的单元格值?

    我想使用同一列中其他行的值对特定行实施自定义计算 我发现AG Grid提供了定义的能力列定义表达式 https www ag grid com javascript data grid cell expressions and aggFun
  • react-native-screens:compileDebugKotlin 错误

    失败 构建失败并出现异常 什么地方出了错 任务 react native screens compileDebugKotlin 执行失败 评估任务 react native screens compileDebugKotlin 的属性 fi
  • C# .NET 4.0 测试框架?

    如果我没记错的话 NUnit 是单元测试事实上的标准 但我刚刚下载了它 编写了一个简单的测试 然后显然我必须启动 GUI 并加载我的 exe组装 根本就失败了 我尝试编辑 C Program Files x86 NUnit 2 5 7 bi
  • XCode:代码覆盖率数据生成失败

    当我尝试运行单元测试时 我在 Objective C 项目中遇到了这个可怕的问题 我已经尝试了以下所有方法 根据各种 SOF 帖子 清除派生数据 删除 Library 中的所有模拟器设置 重新启动 XCode 重新启动MBP 多次重置模拟器
  • Azure无法访问React Web应用程序中的env变量

    几年前我看到有一个类似的问题 但超链接答案已被微软关闭 我有一个使用 create react app 创建的 React 应用程序 它已经部署到heroku并加载一些环境变量来访问谷歌地图等 这一切对于heroku来说都工作得很好 我已经
  • 无法读取setInterval(Hooks)中的最新状态变量[重复]

    这个问题在这里已经有答案了 我想这是因为 JS 的工作原理 但我想你不会在类中遇到这个问题 在此代码中 let open setOpen React useState false let counter setCounter React u
  • 全新安装 create-next-app 后,无效的 href 传递给路由器错误

    在我的本地计算机上安装 nextjs 应用程序后 使用create next app我在控制台中收到此错误Invalid href passed to router 有谁知道如何解决它 我尝试使用to属性而不是href属性在Link组件的但
  • 需要根据用户选择有条件地渲染具有 X 行数的部分

    我有一个反应组件 其中包含一个下拉列表 其中的选项包括none 1 5 and 13 根据用户选择的数字 我需要渲染一个部分 其中包括许多行 每个行都有字段名称和下拉列表 如果用户不选择任何一个 我需要整个附加配置部分消失 新部分中的每个下
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 开玩笑 setTimeout 不暂停测试

    it has working hooks async gt setTimeout gt console log Why don t I run expect true toBe true 15000 我已经查看了这个答案 Jest 文档和几
  • 使用 Mockito 进行 Android 仪器测试 [重复]

    这个问题在这里已经有答案了 我正在尝试将 Mockito 框架与 android 仪器测试一起使用 但无法正确初始化它 我有以下测试类 class MainKontorTest extends ActivityInstrumentation
  • 对象中的字符串插值

    我有以下代码 const answerObject setAnswerObject useState const answerItem question survey id selectedAnswer setAnswerObject an
  • 如何模拟私有内部类

    我有一个 spring 应用程序 我想在像这样的控制器上创建一个单一测试 问题是Wrapper类是私有内部类 所以测试中看不懂Wrapper 是否可以在不更改控制器类的情况下使用 Mockito 来模拟它 我可以使用prepareData
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • 如何在MUI GridList中实现图块的水平滚动?

    这是我的 JS 页面 我需要在其中实现GridList组件显示多个图块 并且在列表大小超出屏幕限制后可水平滚动 import React useState from react import Header from common heade

随机推荐

  • 在 .h 文件中声明结构并在 .c 文件中实现

    这是我的 h 文件 struct MyString typedef struct MyString MyString 我想在 c 文件中声明其成员 我试过 typedef struct MyString char str pointer t
  • 如何缩短 Git Bash 提示符 (Windows)

    如何缩短我的 git bash 提示符 Malik LAPTOP 7R9912OI MINGW64 Desktop test 像这样的事情 Malik test 我在 Windows 上使用 git bash git 版本为 2 21 0
  • java中从arraylist中删除具有多个索引的多个元素

    我有两个List2 我将项目存储在一个列表中 在第二个列表中我存储 int 数字 我将其视为索引 我想从包含所有索引的项目列表中删除项目 ArrayList
  • R中多个变量的线图

    我有以下格式的输入数据 x y z 0 2 2 4 5 5 3 8 6 8 10 4 6 9 3 15 7 6 10 5 我如何在R中像Excel 如下所示 一样绘制xy散点图 至少有四种方法可以做到这一点 1 此处使用名为 df 的 水平
  • 获取没有函数参数的二叉树的高度

    import java util Scanner public class BinaryTree private int info private BinaryTree left private BinaryTree right priva
  • 在 dplyr 中使用字符串作为过滤器?

    有没有办法在 dplyr 中使用字符串变量作为过滤器参数 例如 filter iris Sepal Length gt 6 将被替换为 string lt Sepal Length gt 6 filter iris string 基本上 我
  • 管理中的 AbstractController::DoubleRenderError

    我正在从事疯狂商务工作 我正在尝试调整 active sale controller 中的几个操作 我有一些条件 如果条件失败 我将重定向到 返回 否则我将继续下一步 我现在面临的问题是我在同一个操作中使用了两次redirected to
  • 无法安装 Visual Studio 2013 更新 5 (RTM); Apache Cordova 工具

    我正在尝试安装 VS2013 更新 5 但它不会安装 因为它被阻止 我必须 通过控制面板卸载旧版本的 Visual Studio Tools for Apache Cordova 多设备混合应用程序 我已经按照要求卸载了它 尽管与 VS20
  • Node js Express 中的环境变量(.env)

    是否可以为所有不同的部署环境 例如开发 生产等 提供一个 env 文件 根据环境 需要加载相应的环境变量文件 是的 您可以使用dotenv https github com motdotla dotenv module例如 env DB H
  • 在没有 JavaScript 的情况下将 HTML 元素与父元素的中间对齐

    我想在元素中间放置一个 水平对齐很容易 当然垂直对齐也可以用JS来完成 但我确信用CSS有更好的方法 有什么窍门呢 附 我需要这个用于具有 HTML5 元素的应用程序 因此我不介意该解决方案是否仅适用于支持画布的浏览器和 IE 7 8 使用
  • 使用 Typescript 时如何更新 Next-auth 中会话回调中的会话类型

    我正在使用打字稿 我的 next auth tsx 文件如下所示 import NextAuth Awaitable Session User from next auth import GithubProvider from next a
  • 如何使用try catch语句抛出错误?

    Utility const readUserUtility id a gt const currentstore store getState const returnedArray currentstore users filter us
  • 使用多个跟踪侦听器

    我有 2 个 WCF 服务 它们是从单个 Windows 主机托管的 我使用跟踪侦听器将数据记录到应用程序日志中 我已将以下代码添加到配置文件中
  • 插入符号训练的公式和非公式结果不同

    我注意到在训练时使用插入符中的公式和非公式方法会产生不同的结果 此外 公式方法所需的时间几乎是非公式方法所需时间的 10 倍 这是预期的吗 gt z lt data table c1 sample 1 1000 1000 replace T
  • 在 TeamCity 中全局禁用 FxCop 错误

    好的 今天还有一个 FxCop 问题 我已经阅读了有关 IdentifiersShouldBeCasedCorrectly 规则的争论 以及它是否应该是 XML 或 Xml 嗯 我是一个 XML 人 并且我想保持这种状态 因此 我做not希
  • 使用集束搜索实现 seq2seq

    我现在正在实施seq2seq基于示例代码的模型tensorflow提供 我想得到一个top 5解码器进行强化学习的输出 然而 他们用注意力解码器实现了翻译模型 所以我应该实现波束搜索来获取top k结果 现在有一部分代码已实现 该代码被添加
  • 无内存屏障的乱序写入:数据争用的唯一可能原因?

    在经历的同时Java 并发实践 作者 Brian Goetz我遇到了以下行 当一个变量被多个线程读取时 就会发生数据竞争 并由至少一个线程写入 但读取和写入不是按发生之前排序 正确同步的程序之一是 没有数据竞争 正确同步的程序表现出顺序 一
  • 这是 Xamarin Forms 中的内存泄漏吗?

    我遇到了一个问题 页面对象一旦被导航离开 就不会被垃圾收集 我整理了一个非常基本的示例 演示了使用 NavigationPage 和 PushAsync 方法时出现的问题 该页面使用弱引用列表显示 活动 页面的数量 public class
  • tar:错误不可恢复:现在退出

    当我解开教义时 rw r r 1 root root 660252 2010 10 16 23 06 Doctrine 1 2 0 tgz 我总是收到此错误消息 root X100e usr local lib Doctrine stabl
  • 何时在带有react-dom的jest单元测试中使用act()

    根据反应单元测试文档 act 要为断言准备组件 请包装代码渲染 它并在 act 调用中执行更新 这使得你的测试 运行起来更接近 React 在浏览器中的工作方式 但测试在这两种情况下都运行得很好 没有 act it Should retur