如何在 Jest 的自定义测试环境文件中使用 TypeScript?

And*_*sca 17 node.js typescript jestjs

我需要为我的测试启用一些全局变量,因此我正在设置一个自定义环境以testEnvironment在我的选项中使用jest.config.json以实现这一目标。

对于我们的项目,我们有一个 TypeScript 文件,用于 setupFilesAfterEnv选项它工作得很好,但testEnvironment似乎只支持 ES5。有没有办法在这样的选项中使用 TypeScript?

我使用 ES5 语法成功创建了一个自定义 Jest 环境,但是由于我们正在注入全局变量,因此我需要 TypeScript 来声明一个全局命名空间,请参见:https : //stackoverflow.com/a/42304473/4655076

{
  ///...
  setupFilesAfterEnv: ['<rootDir>/test/setup.ts'], // This works with ts
  testEnvironment: '<rootDir>/test/customJestEnvironment.ts', // This doesn't work with ts
}
Run Code Online (Sandbox Code Playgroud)

小智 -1

global.d.ts您可以在项目的根目录下创建一个文件。

然后您可以定义全局变量,如下所示。就我而言,它是一个 NestJS 应用程序,但您可以定义任何内容。

declare global {
  namespace NodeJS {
    interface Global {
      app: INestApplication;
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

这是客户端项目的另一个示例,我们定义窗口属性,例如innerWidth

declare namespace NodeJS {
    interface Global {
        innerWidth: number;
        dispatchEvent: Function;
    }
}
Run Code Online (Sandbox Code Playgroud)