我正在使用Jest库在我的节点项目中运行单元测试,一切工作正常。当我为路由身份验证创建新测试时,它甚至开始显示服务器已经在端口4000上运行,即使我正在使用afterEach()函数来关闭服务,但也不知道为什么仍然在端口4000上运行服务器。
即使我已经删除了用于路由身份验证的新测试,并通过关闭所有终端重新启动了我的项目,但是每当我运行该项目时,它就会开始显示错误,表明服务器已经在端口4000上运行。
这是用户测试文件中的代码,可以正确关闭服务器,而在下一个测试文件中,我再次使用相同的功能进行服务器连接和关闭。
imeiListBox.SelectedItem as Device;
第二个测试文件代码
const request = require("supertest");
const { Genre } = require("../../models/genre");
const { User } = require("../../models/user");
const mongoose = require("mongoose");
let server;
describe("/api/genres",() => {
beforeEach(() => {
server = require("../../index");
});
afterEach(async () => {
server.close();
await Genre.remove({});
});
这是...........................的输出。 ●身份验证中间件›如果未提供令牌,则应返回401
const { User } = require("../../models/user");
const { Genre } = require("../../models/genre");
const request = require("supertest");
describe("auth middleware",() => {
beforeEach(() => {
server = require("../../index");
});
afterEach(async () => {
await Genre.remove({});
server.close();
});
测试套件:1个失败,3个通过,总共4个 测试:1个失败,26个通过,总共27个 快照:共0个 时间:13.606秒 运行所有测试套件。
Index.js代码
listen EADDRINUSE: address already in use :::4000
10 |
11 | const port = process.env.PORT || 4000;
> 12 | const server = app.listen(port,() =>
| ^
at Function.listen (node_modules/express/lib/application.js:618:24)
at Object.<anonymous> (index.js:12:20)
at Object.<anonymous> (tests/integration/auth.test.js:6:14)