如何在连接到 MongoDB 后使用 Jest 进行测试?
How to test with Jest after connecting to MongoDB?
我正在尝试为我的 Express 服务器中需要连接到我的 MongoDB 数据库的各种路由设置测试。
我不确定如何构建 Jest 文件以便进行测试。在我的正常 index.js 文件中,我正在导入应用程序,并且 运行 app.listen
在连接 .then
调用中,如下所示:
const connect = require("../dbs/mongodb/connect");
connect()
.then(_ => {
app.listen(process.env.PORT, _ => logger.info('this is running')
})
.catch(_ => logger.error('The app could not connect.');
我已经在我的 test.js 文件中尝试 运行 相同的设置,但它不起作用。
例如:
const connect = require("../dbs/mongodb/connect");
const request = require("supertest");
const runTests = () => {
describe("Test the home page", () => {
test("It should give a 200 response.", async () => {
let res = await request(app).get("/");
expect(res.statusCode).toBe(200);
});
});
};
connect()
.then(_ => app.listen(process.env.PORT))
.then(runTests)
.catch(err => {
console.error(`Could not connect to mongodb`, err);
});
如何在 运行 我的测试之前等待与 MongoDB 的连接?
所以,事实证明我必须做出一些改变。首先,我必须在 运行 测试之前加载我的 .env 文件。我通过在项目的根目录中创建一个 jest.config.js
文件来做到这一点:
module.exports = {
verbose: true,
setupFiles: ["dotenv/config"]
};
然后在实际测试套件中,我 运行 beforeEach
连接到 MongoDB 服务器。
const connect = require("../dbs/mongodb/connect");
const app = require("../app");
const request = require("supertest");
beforeEach(async() => {
await connect();
});
describe("This is the test", () => {
test("This should work", async done => {
let res = await request(app).get("/home");
expect(res.statusCode).toBe(200);
done();
})
});
我正在尝试为我的 Express 服务器中需要连接到我的 MongoDB 数据库的各种路由设置测试。
我不确定如何构建 Jest 文件以便进行测试。在我的正常 index.js 文件中,我正在导入应用程序,并且 运行 app.listen
在连接 .then
调用中,如下所示:
const connect = require("../dbs/mongodb/connect");
connect()
.then(_ => {
app.listen(process.env.PORT, _ => logger.info('this is running')
})
.catch(_ => logger.error('The app could not connect.');
我已经在我的 test.js 文件中尝试 运行 相同的设置,但它不起作用。
例如:
const connect = require("../dbs/mongodb/connect");
const request = require("supertest");
const runTests = () => {
describe("Test the home page", () => {
test("It should give a 200 response.", async () => {
let res = await request(app).get("/");
expect(res.statusCode).toBe(200);
});
});
};
connect()
.then(_ => app.listen(process.env.PORT))
.then(runTests)
.catch(err => {
console.error(`Could not connect to mongodb`, err);
});
如何在 运行 我的测试之前等待与 MongoDB 的连接?
所以,事实证明我必须做出一些改变。首先,我必须在 运行 测试之前加载我的 .env 文件。我通过在项目的根目录中创建一个 jest.config.js
文件来做到这一点:
module.exports = {
verbose: true,
setupFiles: ["dotenv/config"]
};
然后在实际测试套件中,我 运行 beforeEach
连接到 MongoDB 服务器。
const connect = require("../dbs/mongodb/connect");
const app = require("../app");
const request = require("supertest");
beforeEach(async() => {
await connect();
});
describe("This is the test", () => {
test("This should work", async done => {
let res = await request(app).get("/home");
expect(res.statusCode).toBe(200);
done();
})
});