gpt4 book ai didi

javascript - 如何在 nodeJS 项目中使用 Jest 全局设置和拆卸?

转载 作者:行者123 更新时间:2023-12-03 12:12:52 25 4
gpt4 key购买 nike

我使用 jest 向我的 Node js 项目添加了测试,但是对于每个测试套件,都有一个 beforeAll 方法可以创建一个新的测试服务器并连接到 mongo 数据库,还有一个 afterAll 方法可以关闭测试服务器和数据库。我想为所有测试套件全局执行上述任务,而不是一次一个。下面是我的代码示例。
app.js

const express = require("express");
const app = express();
const { connectToDb } = require("./startup/db");
require("./startup/routes")(app);
connectToDb();
...

const port = process.env.PORT || 3000;

if (process.env.NODE_ENV !== "test") {
app.listen(port, () => winston.info(`Listening on port ${port}...`));
}

module.exports = app;
auth.test.js
const request = require("supertest");
const http = require("http");
const { disconnectDb } = require("../../startup/db");

describe("auth middleware", () => {
let server;

beforeAll((done) => {
const app = require("../../app");
server = http.createServer(app);
server.listen(done);
});

afterAll((done) => {
server.close(done);
disconnectDb();
});

it("should return 401 if no token is provided", async () => {
const res = request(server)
.post("/api/genres")
.set("x-auth-token", "")
.send({ name: "genre1" });
expect(res.status).toBe(401);
});

...
jest.config.js
module.exports = {
testEnvironment: "node",
};

最佳答案

试试这个 jest.config.js:

module.exports = {
testEnvironment: "node",
globalSetup: '<rootDir>/src/testSetup.ts'
};
在 testSetup.ts 你可以这样做:
// testSetup.ts
module.exports = async () => {
const app = require("../../app");
server = http.createServer(app);
server.listen(done);
};

关于javascript - 如何在 nodeJS 项目中使用 Jest 全局设置和拆卸?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63138016/

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