У меня есть сервер Node.JS, который использует Socket.IO с адаптером Redis. При запуске тестов Jest процесс Jest зависает после запуска всех тестов. Я сократил код до следующего, чтобы иметь возможность воспроизводить. Именно адаптер Redis вызывает проблему. Что еще мне нужно сделать?
приложение-test.ts
import express from 'express';
import fse from 'fs-extra';
import * as http from 'http';
import socketIo from 'socket.io';
import SocketIORedis from 'socket.io-redis';
import { CONFIG_TYPE, CONFIGS_PATHS } from '../../constants';
class Server {
// Bootstrap the application.
public static bootstrap(): Server {
return new Server();
}
public app: express.Application;
public server: http.Server;
private io: SocketIO.Server;
constructor() {
// Create expressjs application
this.app = express();
// Create server
this.createServer();
}
public shutdown(): void {
this.io.close();
this.server.close();
}
private async createServer() {
this.server = http.createServer(this.app);
this.io = socketIo(this.server, { transports: ['polling', 'websocket'] });
const redisConfig = await fse.readJson(CONFIGS_PATHS[CONFIG_TYPE].REDIS);
const redisAdapter = SocketIORedis(redisConfig);
this.io.adapter(redisAdapter);
}
}
// Bootstrap the server
const server = Server.bootstrap();
export default server;
приложение-test.spec.ts
import app from './app-test';
describe('test', () => {
afterAll((done) => {
app.shutdown();
done();
});
it('fake test', () => {
expect(true).toBeTruthy();
});
});