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

标签 node.js typescript jestjs

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

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

我使用 ES5 语法成功创建了自定义 Jest 环境,但是由于我们要注入(inject)全局变量,我需要 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
}

最佳答案

您可能会发现这很有帮助:Configure Jest global tests setup with .ts file (TypeScript)

但基本上你只能将编译好的 JS 文件作为环境传入。

你可以按照那篇文章的建议去做。但这对我来说并没有开箱即用。所以我手动编译我的环境。

IE。

在 package.json

"test": "tsc --lib es6 --target es6 --skipLibCheck -m commonjs --esModuleInterop true path/to/env.ts && 
jest --config=jest.config.js",

在 jest.config.js 中
{
  testEnvironment: '<rootDir>/path/to/env.js', // Note JS extension.
}

关于node.js - 如何在 Jest 的自定义测试环境文件中使用 TypeScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58163210/

相关文章:

jestjs - 在 test.each Jest 中使用变量表达式

javascript - 引用 enzyme 导入错误

javascript - 对不同的 JSON 对象数组进行哈希处理,每个人都会获得相同的哈希值

node.js - Node环境下使用Babel获取ApolloClient转ES5 CommonJS模块格式

node.js - 返回类中的中间件

reactjs - React TypeScript : Types of property 'X' are incompatible. 类型 'Y' 不可分配给类型 'Z'

intellij-idea - 如何修复 IntelliJ IDEA 2016 TypeScript 错误, "Cannot start compiler process"

javascript - 使用 "doMock"以避免提升时开 Jest 不模拟模块

node.js - Phonegap 3.4.0 无法构建新项目和更新旧项目

node.js - 谷歌 Ngram 排序?