Глобальная связь TypeORM с Jest - PullRequest
0 голосов
/ 03 мая 2020

Я сталкиваюсь с некоторыми проблемами при использовании 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 или, по крайней мере, решить проблему «слишком много клиентов»?

...