【发布时间】:2020-06-04 20:47:40
【问题描述】:
很简单的情况,我正在尝试导入 app.listen(port) 以进行测试。测试将失败(失败原因:app.address 不是函数和 server.close 不是函数)。实际上服务器变量返回一个空对象,所以导入没有正确完成,这就是测试用例失败的原因......
genres.test.js
const request = require("supertest");
let server;
describe("/api/genres", () => {
beforeEach(() => {
server = require("../../index");
});
afterEach(() => {
server.close();
});
describe("GET /", () => {
it("should return all genres", async () => {
const res = await request(server).get("/api/genres");
expect(res.status).toBe(200);
});
});
});
index.js
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
const server = app.listen(port, () => console.log(`Listening on port ${port}`));
module.exports = server;
我是否遗漏了有关导入的内容? 如果您需要更多代码行/部分(请注意,我提供的 index.js 不完整)或者您是否需要完整的错误消息,请告诉我。
我知道这个问题已经被问过好几次了,但在大多数情况下,解决方案只是导入 app.listen 而不是 app,我已经这样做了。 我也尝试使用 export default 而不是 module.exports。
【问题讨论】:
标签: javascript reactjs testing jestjs supertest