我正在使用ts-jest(Jest和TypeScript),并希望为所有测试套件配置一些全局设置(初始化测试数据库)。
我发现在jest配置中有globalSetup
选项:
"jest": {
"globalSetup": "./jest-config.js"
}
但只有.js
文件可以用于安装。我想使用.ts
文件,因为我所有的代码包括在TypeScript安装代码。
我怎样才能做到这一点?
我正在使用ts-jest(Jest和TypeScript),并希望为所有测试套件配置一些全局设置(初始化测试数据库)。
我发现在jest配置中有globalSetup
选项:
"jest": {
"globalSetup": "./jest-config.js"
}
但只有.js
文件可以用于安装。我想使用.ts
文件,因为我所有的代码包括在TypeScript安装代码。
我怎样才能做到这一点?
4条答案
按热度按时间sirbozc51#
我找到了解决办法。
我最初的项目结构是:
.json包中的Jest配置:
使用此配置,
ts-jest
在内存中执行.ts文件的transpiling。我在tsconfig.json
的compilerOptions
中有outDir
选项,但在outDir中没有写入任何内容,因为我无法使用transpiled jest-config.js然后移动src中的tests文件夹并更改Jest配置。项目的新结构为:
新的Jest配置为:
现在我可以在Jest中使用jest-config.js进行全局设置。
添加
module.exports = async function() { ... }
vxqlmq5t2#
全局设置是在ts环境可用之前执行的,因此解决方法是手动创建环境,要求在文件开头输入 ts-node。
在您的jest配置(
package.json
或jest.config.js
)中:然后在
globalSetup.ts
中:您可以在github上阅读更多关于 ts-node 的信息。
ej83mcc03#
对于有@remeus答案的TS错误的任何人,以下更改将起到作用:
如果使用绝对导入,请使用以下命令:
shyt4zoc4#
@glinda93回答帮助了我,但我在globalTeardown文件中得到了一个错误。
解决方案是在globalSetup文件中添加
require('tsconfig-paths').register();
,然后:在全局拆卸文件中。
由于某种原因,如果TS节点寄存器仅在拆卸文件中,则它工作。