gpt4 book ai didi

javascript - 导出服务器进行集成测试时出现 React Jest 问题

转载 作者:行者123 更新时间:2023-12-02 21:43:33 24 4
gpt4 key购买 nike

情况很简单,我正在尝试导入 app.listen(port) 进行测试。测试将失败(失败原因:app.address 不是函数且 server.close 不是函数)。实际上,服务器变量返回一个空对象,因此导入未正确完成,这就是测试用例失败的原因......

流派.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,我已经这样做了。我还尝试使用导出默认值而不是 module.exports。

最佳答案

这对我有用。

index.js:

const express = require('express');

const app = express();
const port = process.env.PORT || 3000;

app.get('/api/genres', (req, res) => {
console.log('api genres');
res.sendStatus(200);
});

const server = app.listen(port, () => console.log(`Listening on port ${port}`));

module.exports = server;

index.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);
});
});
});

测试结果:

 PASS   apollo-graphql-tutorial  src/stackoverflow/60321422/index.test.js
/api/genres
GET /
✓ should return all genres (289ms)

console.log src/stackoverflow/60321422/index.js:11
Listening on port 3000

console.log src/stackoverflow/60321422/index.js:7
api genres

Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.693s, estimated 2s

关于javascript - 导出服务器进行集成测试时出现 React Jest 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60321422/

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