Я сталкиваюсь с некоторыми проблемами при использовании PostgreSQL с TypeORM и Jest. По сути, в каждом тестовом файле я открываю соединение с базой данных до запуска тестов и закрываю его после всех тестов. Но даже если я закрываю соединение, я получаю ошибку sorry, too many clients already
.
Итак, мне было интересно, есть ли способ установить глобальное соединение для использования во всех тестах и устранить необходимость чтобы открыть и закрыть соединение в каждом файле.
Я пытался использовать Global Setup от jest со следующим кодом:
require('ts-node').register('../tsconfig.json');
require('../src/bootstrap');
const { createConnection, getConnection } = require('typeorm');
const { resolve } = require('path');
const config = require('../src/config/typeorm');
module.exports = async () => {
await createConnection({
type: process.env.FINTECH_BACKEND_SQL_DIALECT as 'postgres' | 'mysql',
host: process.env.FINTECH_BACKEND_SQL_HOST,
port: Number(process.env.FINTECH_BACKEND_SQL_PORT),
username: process.env.FINTECH_BACKEND_SQL_USER,
password: process.env.FINTECH_BACKEND_SQL_PASS,
database: process.env.FINTECH_BACKEND_SQL_DB_NAME,
synchronize: false,
entities: [resolve(__dirname, '..', 'src', 'app', 'models', '*')],
});
};
Но я не могу использовать это соединение в тестах. Это просто выдает ошибку, говорящую, что Connection "default" was not found
.
Есть ли способ установить глобальное соединение TypeORM или, по крайней мере, решить проблему «слишком много клиентов»?