React+TypeScript项目执行npm test时jest-watch-typeahead初始化失败如何解决
报错截图:
报错根因
你遇到的初始化watch插件报错,核心原因是依赖版本不兼容:项目内置的jest@26.6.0和jest-watch-typeahead@1.0.0版本不匹配,1.x版本的jest-watch-typeahead要求jest版本 >=27,低于该版本就会触发插件初始化失败。
修复步骤
- 第一步:卸载当前不兼容的jest-watch-typeahead版本
执行命令:npm uninstall jest-watch-typeahead - 第二步:安装和jest 26兼容的jest-watch-typeahead版本
执行命令:npm install --save-dev jest-watch-typeahead@0.6.5 - 第三步:清理jest缓存避免旧缓存影响
执行命令:npm test -- --clearCache - 第四步:修正测试用例写法(可选,避免后续快照生成异常)
你当前的浅渲染测试代码里,ShallowRenderer.render()没有返回值,需要调用getRenderOutput()获取渲染结果再做快照比对,修正后的代码如下:import React from "react"; import ShallowRenderer from "react-test-renderer/shallow"; import EngineeringArea from "./EngineeringArea"; describe("EngineeringArea Screen", () => { it("EngineeringArea Screen renders correctly", () => { const renderer = ShallowRenderer.createRenderer(); renderer.render(<EngineeringArea />); expect(renderer.getRenderOutput()).toMatchSnapshot(); }); });
注意:如果后续运行测试出现jest相关的类型报错,可将
@types/jest版本降级到和jest匹配的26.x版本,执行命令:npm install --save-dev @types/jest@26
验证
执行npm test命令,测试即可正常运行,生成对应快照文件。
内容的提问来源于stack exchange,提问作者Abhishek kumar
相关产品推荐
相关产品推荐


