React+Jest测试出现ReferenceError: expect is not defined问题求助
问题解决方案
报错原因
ReferenceError: expect is not defined 报错是因为错误使用--setupFiles参数加载setupTests.js,setupFiles 是Jest测试环境初始化前执行的脚本,此时Jest的全局变量expect还未挂载,提前引入@testing-library/jest-dom/extend-expect需要依赖全局expect,所以触发报错。另外你的配置存在多处冗余内容,也会增加冲突概率。
修复步骤
- 第一步:修改package.json中的test命令,移除手动指定的setupFiles配置,create-react-app默认会自动加载src/setupTests.js,无需额外配置:
"test": "react-scripts test --env=jsdom"
- 第二步:清理setupTests.js中的重复引入,修改后内容如下:
import { configure } from "enzyme" import Adapter from "enzyme-adapter-react-16"; import '@testing-library/jest-dom'; configure({ adapter: new Adapter() });
注:最新版@testing-library/jest-dom已经整合extend-expect能力,无需单独引入extend-expect文件,保留一次引入即可
- 第三步:删除测试用例中重复的enzyme配置行
configure({ adapter: new Adapter() });,该配置已经在setupTests.js中全局生效,无需在单测文件中重复声明。
修改完成后重新运行测试命令即可正常执行。
内容的提问来源于stack exchange,提问作者Gary Wilson
相关产品推荐
相关产品推荐

