首页 程序笔记 React Error: Exceeded timeout of 5000 ms for a test. 错误

React Error: Exceeded timeout of 5000 ms for a test. 错误

为React项目编写单元测试时报错Error: thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."

检查上下代码后是发现使用了jest.useFakeTimers()。

原来在beforeEach中使用了jest.useFakeTimers(),所以每个case都会使用假计时器,所以去掉了beforeEach里的jest.useFakeTimers(),然后只在需要假计时器的Case里useFakeTimers,并且在afterEach中再切换回实时计时器。

这样就不报错了,问题解决。

为什么使用了假计时器Fake Timers?

在某些情况下,当您的代码使用计时器(setTimeout、setInterval、clearTimeout、clearInterval)时,您的测试可能会变得不可预测、缓慢和脆弱。

为了解决这些问题,或者如果需要依赖代码中的特定时间戳,大多数测试框架都提供了将测试中的实时计时器替换为假计时器的选项。这应该偶尔使用,而不是定期使用,因为使用它会产生一些开销。

在测试中使用假计时器时,测试中的所有代码都使用假计时器。

设置假计时器的常见模式通常在beforeEach中,例如:

// Fake timers using Jest
beforeEach(() => {
  jest.useFakeTimers()
})

当使用假计时器时,需要记住在测试运行后恢复计时器。这样做的主要原因是为了防止在测试完成后运行的第三方库(例如清理函数)耦合到假计时器,而使用真计时器。

为此,通常在afterEach中调用useRealTimers。

在切换到实时计时器之前,还必须调用runOnlyEndingTimers。这将确保您在切换到实时计时器之前刷新所有挂起的计时器。如果你不使用定时器,而只是切换到实时定时器,那么预定的任务就不会被执行,会得到意想不到的行为。这对于第三方来说非常重要,因为他们在你没有意识到的情况下安排任务。

下面是一个使用jest的例子:

// Running all pending timers and switching to real timers using Jest
afterEach(() => {
  jest.runOnlyPendingTimers()
  jest.useRealTimers()
})


1

站心网

为React项目编写单元测试时报错Error: thrown: "Exceeded timeout of 5000 ms for a test. Use jest.setTim..

为您推荐

.NET Core上传文件报Access xxx.tmp is denied错误

.NET Core上传文件本地调试正常,部署到IIS服务器之后会报错,错误是Access 'c:\\windows\\temp\\xxx.tmp' is denied.看上去是IIS用户没有权限访问系统临时文件夹的权限。经过测试,不需要特地去为temp文件..

.NET MVC jquery.validate errorPlacement无效

jQuery Validate是一款用于表单验证的插件,可以方便地对表单进行各种验证。而errorPlacement选项则用于定义错误提示信息的显示位置。errorPlacement选项可以传入一个函数,该函数接收两个参数:错误提示信息元素(..

国外流行的前端框架有哪些?

国外流行的前端框架有很多,以下是一些常见且受欢迎的前端框架:React:由Facebook开发的JavaScript库,用于构建用户界面。它采用组件化的方式来构建复杂的UI,并具有高度的灵活性和性能优化。Angular:由Google开发..

必须添加对程序集"netstandard, Version=2.0.0.0"错误解决方法

编译.net core项目出现如下错误:必须添加对程序集"netstandard, Version=2.0.0.0"。解决方法是更新.net core2,升级vs2017到15.4版本,升级framework到4.7版本。..

filezilla 数据socket错误 文件传输失败

在服务器上安装了filezilla服务器软件后,使用FlashFXP上传下载文件失败。网上找了一些关于这个文件的解决方案,分享一下希望可以帮到大家。使用FlashFXP默认设置的话,无法打开FTP目录。首先、需要设置使用“STAL -..

Android Volley BasicNetwork:performRequest:Unexpected response code 302 错误

Android Volley BasicNetwork:performRequest:Unexpected response code 302 for http://xxx异常,这个http://xxx的接口在浏览器中打开可以正常访问。接口做了302重定向,从http重定向到https的地址去了。Volley对重..

.Net测试模拟库FakeItEasy用法示例

FakeItEasy简介FakeItEasy是一个.NET平台的简单mocking开源库,它提供了一个简单的方式来模拟对象和创建伪造对象,方便我们在单元测试中更容易地创建模拟对象。FakeItEasy库使用非常简单,方便开发者模拟各种情况,..

Angular echarts No provider for InjectionToken NGX_ECHARTS_CONFIG!错误

npm install echartsnpm install ngx-echarts安装使用echarts运行时报如下错误ERROR NullInjectorError: R3InjectorError(IndexModule)[InjectionToken NGX_ECHARTS_CONFIG -> InjectionToken NGX_ECHARTS_CONFIG -..

linux中Qt工程编译报错: error: 找不到 -lGL

编译一个Qt项目报错:Qt error: 找不到 -lGL这是因为 Qt编译器找不到 OpenGL 的动态链接库(libGL.so)。 在大部分 Linux 发行版中都是默认安装OpenGL,包括 Ubuntu、CentOS 等,找不到该链接库一般都是路径不对,如..

React路径不变location.search参数改变不触发useEffect

React项目里有两个菜单项会到同一个pathname但是参数不同,这两个页面切换时不会触发页面数据刷新(切换url页面代码不会重新执行)。原来的做法是用window.location.search获取参数,在别的地方都没有问题,这里比较..

在IIS部署React前端项目

在IIS上部署React前端项目,在不是根路径的时候刷新页面会404,可以通过url rewrite设置解决这个问题。首先在react项目中运行npm run build打包项目。然后在IIS上创建一个站点,把build文件夹里的内容拷贝到站点文件..

React @testing-library UserEvent.paste用法更新到14版本后不生效

把testing-library从13.5.0更新到了14.1.1,发现原来paste的case过不了。官网上V13的用法和Demo是这样的:paste(element, text, eventInit, options)test('shouldpastetextininput',()=>{render(<MyInput/>)..

@testing-library userEvent和fireEvent的区别

写react项目UT的时候@testing-library userEvent和fireEvent都能实现触发事件的功能,那么它们的区别是什么?fireEvent官方建议大多数项目都有一些 fireEvent 的用例,但大多数时候你应该使用@testing-library/user-..

@testing-library/react单元测试getBy queryBy和findBy的区别

关于查询查询是测试库提供的在页面上查找元素的方法。 有几种类型的查询(“get”、“find”、“query”); 它们之间的区别在于,如果没有找到元素,查询是否会抛出错误,或者它是否会返回一个 Promise 并重试。 根..

React获取url参数的几种方法

在React中获取URL参数的方法有以下几种:使用window.location.searchconst searchParams = new URLSearchParams(window.location.search);const id = searchParams.get('id');使用react-router-dom如果使用了react-r..

Vue和React怎么选?

选择使用Vue还是React取决于多个因素,包括项目需求、团队经验、个人偏好等。以下是一些考虑因素,可以帮助你在Vue和React之间做出选择:1. 项目需求和复杂性如果你的项目较小且相对简单,Vue可能更适合,因为它具有..

网页没有响应,错误代码: RESULT_CODE_HUNG的原因

网页没有响应,错误代码: RESULT_CODE_HUNG 的原因可能有以下几种:网页服务器宕机或超负荷网页服务器与客户端的网络连接断开网页服务器正在进行维护或升级网页客户端的网络环境不佳网页客户端的浏览器版本过低如果..

linux编译报错:/usr/include/c++/7/cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory

今天在Linux中编译C/C++的程序遇到如下错误:make[3]: Leaving directory /home/v2ray/lede/feeds/luci/applications/luci-app-upnptime: package/feeds/luci/luci-app-upnp/compile#1.74#1.44#3.88In file included..

c++运行时报错误:there is a mismatch in alloc and dealloc

问题描述在运行一个c/c++的程序时,报如下错误:ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new [] vs operator delete)。代码如下:void DemoFunc(char *pBuf){char* val2 = new char[256];for (i..

Linux下编译libxml源码时,报错:/usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to '__open...

问题描述在Linux中编译libxml的源码时,报错如下:In function open,inlined from xmlNanoHTTPSave at nanohttp.c:1185:12:/usr/include/x86_64-linux-gnu/bits/fcntl2.h:50:4: error: call to __open_missing_mode ..

发表回复

返回顶部