使用 jest-mock-extended 测试 prisma 时的 Typescript 循环引用

Eoi*_*rst 16 testing typescript prisma jest-mock-extended

我开始围绕应用程序中的 prisma(v3.6.0) 使用情况编写测试。

为此,我遵循了官方 prisma 页面使用 prisma 进行单元测试,并且我正在使用jest-mock-extended.

我的问题是,在使用模拟的 prisma 函数时出现打字稿错误:

describe('User routes', () => {
    it('should respond success with array of users', async () => {
        prismaMock.user.findMany.mockResolvedValue([]); // <- here is the error
    }
}
Run Code Online (Sandbox Code Playgroud)
Type of property 'AND' circularly references itself in mapped type 
Run Code Online (Sandbox Code Playgroud)

github Testing with prisma上有一些关于这个问题的讨论。我从这次讨论中得到了 3 个选择:

  • 添加"skipLibCheck": true到 tsconfig.json。这破坏了我的代码中的一些内容并且不能解决我的问题
  • 添加了"strictNullChecks": true,也没有效果
  • //@ts-ignore线。这有效地消除了错误,并且测试顺利进行

虽然我能够进行测试,但我不想在测试中到处都忽略这个错误,并且忽略错误只是一个好主意,直​​到它不是。

有人对这个问题有更多信息或建议吗?

Jer*_*emy -2

感谢我自己要打开一个线程,我的理解是这是由于对 prisma lib 进行 TS 检查,对我有用的修复是将这些添加到您的 TS 配置中:

"skipLibCheck": true,
"strictNullChecks": true
Run Code Online (Sandbox Code Playgroud)

我知道“skipLibCheck”可能会破坏代码中的内容,但我认为这可能是正确的方法,因为它会减少编译时间,并且对第 3 方库进行检查(假设它们是第 3 方 d.ts 文件)不是“通常”必需的 - 就像您正在导入第 3 方库一样,您应该相信它可以工作,并且它位于您的应用程序之外。

  • 我已经有了这些设置。仍然收到错误。 (2认同)