gpt4 book ai didi

node.js - 让 Jest 全局设置和全局拆卸在 typescript 项目中工作

转载 作者:行者123 更新时间:2023-12-04 13:54:42 26 4
gpt4 key购买 nike

我想运行一个在运行测试之前打开数据库连接的函数(全局设置)和另一个在测试运行后关闭数据库连接的函数(全局拆卸)。目前我有以下配置:
包.json:

//...
"jest": {
"testEnvironment": "node",
"globalSetup": "./src/jest/globalSetUp.ts",
"globalTeardown": "./src/jest/globalTearDown.ts",
"moduleFileExtensions": [
"js",
"ts"
],
"transform": {
"\\.(ts|tsx)$": "ts-jest"
}
}
和我的 globalSetUp.ts:
import { initDB } from "../dbUtils"

module.exports = async () => {
await initDB();
}
globalTearDown.ts:
import { closeDB } from "../dbUtils"

module.exports = async () => {
await closeDB();
}
但是当我运行测试时,我遇到了 2 个主要错误。
Determining test suites to run.../home/me/Projects/.../Table1.ts:1
import { Entity, PrimaryGeneratedColumn, Column, OneToMany, Index, PrimaryColumn, ColumnType, ColumnOptions } from "typeorm";
^^^^^^

SyntaxError: Cannot use import statement outside a module

CannotExecuteNotConnectedError: Cannot execute operation on "default"connection because connection is not yet established.


这意味着未运行全局设置功能。注意我使用的是 typeORM。
我如何正确设置以便这将起作用?
编辑:
我的 initDB 函数:
export async function initDB() {
console.log("inside intiDB");

await createConnection().then(async connection => {
console.log("connected to db");
}).catch(error => console.log(error));
}
当我运行测试时,我看到 inside initDB但我没有看到 connected to db .我认为 createConnection() 会查看我的实体目录,当它遇到 Table1.ts 时问题就出现了。然后它提示说

import { Entity, PrimaryGeneratedColumn, Column, OneToMany, Index,PrimaryColumn, ColumnType, ColumnOptions } from "typeorm";^^^^^^

SyntaxError: Cannot use import statement outside a module

如果我删除 globalSetup 和 globalTearDown 而只是在我的测试文件中使用 beforeAll 和 afterAll ,那么一切正常。

最佳答案

尝试使用 require语句而不是 import拆卸和安装文件中的语句,如下所示:

//globalTearDown.ts

const { initDB } = require("../dbUtils"); //<--- use require instead of import

module.exports = async () => {
await initDB();
}

对拆解文件执行相同操作。

关于node.js - 让 Jest 全局设置和全局拆卸在 typescript 项目中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64508664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com