在@testing-library/react中调用expect报错:toHaveErrorMessage不是函数
解决TypeError: expect(...).toHaveErrorMessage is not a function的问题
问题根源:
toHaveErrorMessage这个断言方法不属于@testing-library/react,它是@testing-library/jest-dom提供的扩展断言工具,你没安装这个依赖或者没正确导入,才会出现方法不存在的错误。解决步骤:
- 安装依赖
在项目根目录执行命令:npm install --save-dev @testing-library/jest-dom - 导入扩展断言
两种方式任选其一:- 单文件导入:在你的测试代码顶部添加一行:
import '@testing-library/jest-dom'; - 全局配置(推荐,所有测试文件无需重复导入):
如果你用的是Create React App,直接在src/setupTests.js文件里添加上面的导入语句;如果是自定义Jest配置,找到jest.config.js里的setupFilesAfterEnv字段,指向一个配置文件,在该文件中导入@testing-library/jest-dom即可。
- 单文件导入:在你的测试代码顶部添加一行:
- 安装依赖
额外优化提示:
你的测试代码里的waitFor可以简化,toHaveErrorMessage支持配合异步断言使用,也可以改成这样:expect(await screen.findByRole('textbox', { name: /email address/i })).toHaveErrorMessage('Email is required');
内容的提问来源于stack exchange,提问作者Armin66
相关产品推荐
相关产品推荐

