我正在模拟一个git子模块(它实际上只是我们工作中使用的一个javascript库),所有的模拟都开始返回:Failed to get mock metadata
这是在我们把git子模块项目从6升级到babel 7之后发生的,如果我进入子模块并把修改恢复到babel 6,测试就会恢复为通过。
我模拟了这个模块,如下所示:
// path is an alias defined in webpack config
import { MyModule } from 'my-module';
jest.mock('my-module');
MyModule.someAttr.mockResolvedValue({data});
任何想法为什么升级到巴别塔7引入这些错误,一切(包括子模块)工作正常,只是我们的UI使用子模块的测试没有通过
2条答案
按热度按时间laik7k3q1#
该错误与Jest解析manual mocks的方式有关。可能是Webpack使用别名解析器解析了import语句,但
jest.mock()
函数没有考虑该别名解析器。手动模拟在相对于因为你的mock模块是git子模块的一部分,你可以将子模块目录设置为项目根目录下的
__mocks__/
文件夹,或者将导出的子模块依赖项模块放置在__mocks__/
文件夹中。omhiaaxx2#
从我的代码中删除
jest.mock('my-module');
成功了。我在vue3-lottie
包中遇到过这个错误。