首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当前的测试环境没有配置为支持act(.)-@react library/react

当前的测试环境没有配置为支持act(.)-@react library/react
EN

Stack Overflow用户
提问于 2022-04-25 17:24:29
回答 3查看 5.3K关注 0票数 13

我试图升级我的项目,以反应18,一切工作在开发和生产模式在浏览器中。但是,在升级到最新版本的@testing-library/react之后,我的一些单元测试失败了,其中许多正在记录以下警告:

代码语言:javascript
复制
  console.error
    Warning: The current testing environment is not configured to support act(...)

      at printWarning (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:86:30)
      at error (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:60:7)
      at isConcurrentActEnvironment (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:25057:7)
      at warnIfUpdatesNotWrappedWithActDEV (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:27351:12)
      at scheduleUpdateOnFiber (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:25292:5)
      at setLoading (node_modules/.pnpm/react-dom@18.0.0_react@18.0.0/node_modules/react-dom/cjs/react-dom.development.js:17342:16)
      at _callee2$ (node_modules/.pnpm/@cubejs-client+react@0.29.51_react@18.0.0/node_modules/@cubejs-client/react/src/hooks/cube-query.js:56:7)

我做的第一件事是检查我的版本,清除节点模块和锁定文件,以防万一:

  • react 18.0.0
  • react-dom 18.0.0
  • @testing-library/react版本:"13.1.1“
  • 测试框架和版本:"jest":"27.5.1",
  • DOM环境: jsdom 16.7.0

但一切看起来都是对的?

我检查了迁移文档的React 18:https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html,它说@testing-library/react的最新版本不应该需要globalThis.IS_REACT_ACT_ENVIRONMENT = true设置。

但在测试运行之前,我还是尝试手动设置它。但这也没有解决问题,(我尝试了几个版本)。

代码语言:javascript
复制
// @ts-ignore
global.IS_REACT_ACT_ENVIRONMENT = true
// @ts-ignore
globalThis.IS_REACT_ACT_ENVIRONMENT = true
// @ts-ignore
self.IS_REACT_ACT_ENVIRONMENT = true
// @ts-ignore
window.IS_REACT_ACT_ENVIRONMENT = true
// @ts-ignore
this.IS_REACT_ACT_ENVIRONMENT = true

所有这些都不能修复警告或单元测试。

我在jsdom中使用jestv.27.x,我认为这将是最常见的配置?所以我很惊讶会遇到这个错误?

这是我的jest.config

代码语言:javascript
复制
module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'jsdom',
  moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx'],
  moduleNameMapper: {
    '^src/(.*)$': '<rootDir>/src/$1',
    '\\.(css|less|scss|sass)$': 'identity-obj-proxy',
  },
  transform: {
    '^.+\\.(t|j)sx?$': ['ts-jest'],
  },
  setupFilesAfterEnv: ['./src/setupTests.tsx'],
  modulePathIgnorePatterns: ['src/common/config.ts'],
  coverageReporters: ['text', 'json'],
}

你知道为什么这样一个相对简单的设置会在RTL诉13.1.1中遇到这样的警告吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72003409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档