Jestjs 如何解决Jest-Mock错误“;找不到模块";
Jest正在抛出一个错误,说明它在Jestjs 如何解决Jest-Mock错误“;找不到模块";,jestjs,Jestjs,Jest正在抛出一个错误,说明它在Jest.mock()中找不到路径指定的模块 >开玩笑 失败测试/userSelect.test.ts ● 测试套件无法运行 无法从“test/userSelect.test.ts”中找到模块“../src/actions/selectUserById” 8 | 9 | jest.mock('mysql'); >10 | jest.mock('../src/actions/selectUserById'); 11 | 12 | const mockSele
Jest.mock()中找不到路径指定的模块
>开玩笑
失败测试/userSelect.test.ts
● 测试套件无法运行
无法从“test/userSelect.test.ts”中找到模块“../src/actions/selectUserById”
8 |
9 | jest.mock('mysql');
>10 | jest.mock('../src/actions/selectUserById');
11 |
12 | const mockSelectUserById=selectUserById为jest.MockedFunction<
13 | selectUserById的类型
在Resolver.resolveModule(node_modules/jest resolve/build/index.js:306:11)
00:00
在Object.mock(test/userSelect.test.ts:10:6)
最奇怪的是:
此测试在我的本地计算机上通过,但在我们使用的CI服务中失败。如果其他人正在对类似问题进行故障排除,
我最终意识到,测试失败的根本原因是指定路径的大小写敏感性的差异
在我的例子中,真正的文件名是src/actions/selectUserByID
(注意大写字母'D'
),
但是我传递给Jest.mock()的字符串是selectUserById
在某个时候,我在本地重命名了该文件,这就是为什么测试在我的机器上按预期通过的原因。但是,我了解到,git没有检测到对文件名进行区分大小写的更改,这就是为什么CI服务仍然有错误的文件名
我曾经提交区分大小写的文件名,这解决了我的问题
> jest
FAIL test/userSelect.test.ts
● Test suite failed to run
Cannot find module '../src/actions/selectUserById' from 'test/userSelect.test.ts'
8 |
9 | jest.mock('mysql');
> 10 | jest.mock('../src/actions/selectUserById');
11 |
12 | const mockSelectUserById = selectUserById as jest.MockedFunction<
13 | typeof selectUserById
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:306:11)
00:00
at Object.mock (test/userSelect.test.ts:10:6)