Хорошо, я пишу тесты для своего приложения node.js, используя jest и supertest, для каждого набора тестов после первого я получаю сообщение об ошибке Error: listen EADDRINUSE: address already in use :::3000
, я думаю, это потому, что оно пытается запустить сервер на каждом тестовом файле (у меня есть несколько тестовых файлов *.test.js
в /tests
)
Верхняя часть описания тестов в каждом файле теста выглядит примерно так
const request = require("supertest");
const app = require("../index.js"); // the express server
jest.setTimeout(30000);
let token;
beforeAll(done => {
request(app)
.post("/api/users/login")
.send({
email: "email here",
password: "password here"
})
.end((err, response) => {
token = response.body.data; // save the token!
done();
});
});
afterAll(done => {
//logout() //Not implemented yet
done();
});
/* Test starts here */
Итак, мне нужно знать, как предотвратить попытки jest инициализировать несколько экземпляров моего сервера? Можно ли сказать, что весь этот код выполняется в файле предварительного тестирования или около того? Есть ли что-то, что я могу добавить к своему afterAll
, чтобы он остановил сервер, поэтому, когда запускается другой тест, я в порядке? Большое спасибо.