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

Jest从24.x升级至27.0.0后报jasmine is not defined错误如何解决

问题原因

Jest 24.x及更早版本默认内置Jasmine作为测试运行器,会自动在测试运行环境注入全局jasmine对象,所以你不需要手动导入就可以直接使用。从Jest 27版本开始,官方将默认测试运行器从Jasmine切换为自研的jest-circus,这个运行器不再默认暴露全局jasmine对象,所以就会抛出ReferenceError: jasmine is not defined的错误。

解决方案

方案1:替换为Jest原生API(推荐)

不需要手动导入Jasmine,直接把Jasmine的spy写法替换为Jest自带的mock方法即可,性能和兼容性更好:
原代码写法:

getAutocompleteResults: jasmine.createSpy().and.returnValue({features: [{relevance: 1, meta: {}},{relevance: 0}]}),

替换后写法:

getAutocompleteResults: jest.fn().mockReturnValue({features: [{relevance: 1, meta: {}},{relevance: 0}]}),

方案2:兼容原有写法(不推荐长期使用)

如果你不想改动现有大量Jasmine语法的测试代码,可以修改Jest配置,将测试运行器切回Jasmine:
在你的jest配置项中新增:

"testRunner": "jasmine2"

该方案只是临时兼容,后续Jest版本会逐步降低对Jasmine运行器的支持,建议有条件还是替换为原生Jest API。

额外注意事项

如果使用TypeScript,确保你安装的@types/jest版本和当前使用的Jest版本匹配,避免出现类型报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:24:03