Jestjs 如何解决Jest-Mock错误“;找不到模块";

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正在抛出一个错误,说明它在
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)