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

在@testing-library/react中调用expect报错:toHaveErrorMessage不是函数

解决TypeError: expect(...).toHaveErrorMessage is not a function的问题
  • 问题根源:toHaveErrorMessage 这个断言方法不属于 @testing-library/react,它是 @testing-library/jest-dom 提供的扩展断言工具,你没安装这个依赖或者没正确导入,才会出现方法不存在的错误。

  • 解决步骤:

    1. 安装依赖
      在项目根目录执行命令:
      npm install --save-dev @testing-library/jest-dom
      
    2. 导入扩展断言
      两种方式任选其一:
      • 单文件导入:在你的测试代码顶部添加一行:
        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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:15:55