У меня есть следующий класс сервера:
import express, { Request, Response } from 'express';
export default class Server {
server: any;
exp: any;
constructor() {
this.exp = express();
this.exp.get('/', (_req: Request, res: Response) => {
res.json('works');
});
}
start(): void {
this.server = this.exp.listen(3000);
}
stop(): void {
this.server.close();
}
}
Я использую супертест для сквозного тестирования. Я хочу запустить приложение перед всеми тестами и остановить его, когда тесты будут выполнены.
Это легко сделать, используя beforAll и afterAll, где я могу только один раз создать экземпляр класса Server и вызвать методы start и close.
Но поскольку у меня есть более 10 контроллеров для тестирования, я хочу избежать запуска и остановки сервера во время каждого тестового файла.
Я нашел в документации setupFiles и setupFilesAfterEnv, но не могу остановить сервер, так как экземпляр не является "общим" в двух файлах.
Это пример 1 тестового файла:
import supertest from 'supertest';
describe('Album Test', () => {
let app: App;
beforeAll(async (done) => {
app = new App();
await app.setUp(); // database connection (not mentionned in the preivous example)
done();
});
afterAll(async (done) => {
await app.close();
app.server.stop();
done();
});
const api = supertest('http://localhost:3000');
it('Hello API Request', async () => {
const result = await api.get('/v1/user');
expect(result.status).toEqual(200);
...
});
});
Это прекрасно работает, но я дублирую эти методы beforeAll и afterAll в каждом тестовом файле. Есть ли способ объявить это только один раз?
Спасибо