我试图升级我的项目,以反应18,一切工作在开发和生产模式在浏览器中。但是,在升级到最新版本的@testing-library/react之后,我的一些单元测试失败了,其中许多正在记录以下警告:
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.0react-dom 18.0.0@testing-library/react版本:"13.1.1“但一切看起来都是对的?
我检查了迁移文档的React 18:https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html,它说@testing-library/react的最新版本不应该需要globalThis.IS_REACT_ACT_ENVIRONMENT = true设置。
但在测试运行之前,我还是尝试手动设置它。但这也没有解决问题,(我尝试了几个版本)。
// @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
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中遇到这样的警告吗?
https://stackoverflow.com/questions/72003409
复制相似问题