2

我正在构建一个测试实用程序的开源库,其中还包括自定义技术匹配。但是在创建和运行测试文件时,会出现很多关于类型定义的错误。

运行时参考以下错误yarn test在此处输入图像描述

这些错误与两种不同的类型定义有关,它们是:

  • toBeVisible是一个自定义的 Jest 匹配器,应该来自@testing-library/jest-dom
  • toHaveQueryParam是在我的包内部创建的自定义 Jest 匹配器,我在其中声明了定义@types/jest.d.ts- 此类型定义应加载声明合并,但我认为它由于错误而不起作用。

我的问题是:为什么没有加载类型定义?我认为 TS 编译器或 Jest 配置应该有问题

PR 与测试代码

4

1 回答 1

1

非常好的问题,我遇到过很多次这个问题。我使用jest-extendedwhich 在他们的自述文件中说您可能需要在global.d.ts文件中导入类型定义。然后将global.d.ts文件添加到typeRoots您的tsconfig.json.

我还在我的 repo 内部创建了自己的 jest matcher,并将该文件也添加到我typeRoots的文件中。

需要注意的是,如果这些文件不包含在您的tsconfig.json. 例如,您有一个global.d.ts文件,但您rootDir的设置为src(不包括global.d.ts)。


这就是说这里是你可以参考的一个工作示例的repo 。这是自定义匹配器类型定义,global.d.ts导入jest-extended和定义。tsconfig.json typeRoots

总而言之,我认为您只需将自定义类型显式添加到compilerOptions. 并确保在您的tsconfig.json文件选择中包含您的自定义类型文件。

{
  "compilerOptions": {
    "typeRoots": ["./node_modules/@types", "./**/*.d.ts", "./scripts/custom_matchers.ts"]
  }
}
于 2021-04-27T19:36:58.837 回答