You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js+TypeScript中Jest断言提示Assertion无对应属性问题求助

解决Next.js+TypeScript中Jest断言类型报错问题

核心问题:版本不兼容

你当前使用的@testing-library/jest-dom@4.2.4与jest@29.7.0版本严重不匹配——v4版本仅支持Jest 24~26,无法适配Jest 29的类型系统,这是导致toBeInTheDocument等断言方法类型报错的根本原因。

解决方案步骤

1. 升级兼容版本的@testing-library/jest-dom

执行以下命令升级到适配Jest 29的最新稳定版(当前为v6.x系列):

npm install @testing-library/jest-dom@latest --save-dev
# 或使用yarn
yarn add @testing-library/jest-dom@latest --dev

2. 简化jest.setup.ts配置

新版本的@testing-library/jest-dom会自动扩展Jest的断言方法,无需重复导入,修改jest.setup.ts为:

import "@testing-library/jest-dom";

3. 调整tsconfig.json的类型配置

在tsconfig.json的compilerOptions.types中添加@testing-library/jest-dom(新版本自带类型定义,无需额外安装@types包):

"types": ["cypress", "node", "jest", "@testing-library/jest-dom"],

同时可以移除typeRoots中多余的./node_modules/@testing-library配置,默认TypeScript会自动识别包内的类型文件。

4. 验证配置

重启TypeScript语言服务或IDE,运行测试用例,断言方法的类型报错应该会消失。

替代方案(不升级版本的临时处理)

如果暂时无法升级依赖,可以手动扩展Jest的类型定义:
在项目根目录创建jest.d.ts文件,添加如下内容:

import "@testing-library/jest-dom";

并确保该文件被tsconfig.json的include字段包含(你的当前配置已经包含**/*.d.ts,无需额外修改)。

关于jest-without-globals的替代

无需使用该老旧包,升级@testing-library/jest-dom后,全局断言方法即可正常工作,且完全兼容Jest 29。

内容的提问来源于stack exchange,提问作者Daniel Erdos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:40:59