我正在模拟git子模块(本质上只是我们在工作中使用的javascript库),我所有的模拟都开始返回:
Failed to get mock metadata
这发生在我们将git子模块项目升级到babel 7(从6)之后。如果进入子模块并将更改还原回babel 6,测试将返回通过状态。
我像这样模拟模块:
// path is an alias defined in webpack config
import { MyModule } from 'my-module';
jest.mock('my-module');
MyModule.someAttr.mockResolvedValue({data});
关于升级到babel 7的任何想法都引入了这些错误,其他所有内容(包括子模块)都可以正常工作,只是使用子模块的UI上的测试未通过
答案 0 :(得分:0)
该错误与Jest解决manual mocks的方式有关。可能是Webpack使用别名解析器解析了import语句,但是jest.mock()
函数并未考虑该别名解析器。相对于
__mocks__/
文件夹中的手动模拟已解决
因为您的模拟模块是git子模块的一部分。您可以将子模块目录设置为放在__mocks__/
文件夹中项目的根目录中,也可以将子模块依赖项的导出模块放在__mocks__/
文件夹中。
.
├── config
├── __mocks__
│ └── mock-module.js
├── submodule
│ ├── __mocks__
│ │ └── mock-submodule.js
│ └── index.js
├── node_modules
└── src