В интеграционных тестах я использую следующие фрагменты для создания соединения
import {Connection, createConnection} from 'typeorm';
// @ts-ignore
import options from './../../../ormconfig.js';
export function connectDb() {
let con: Connection;
beforeAll(async () => {
con = await createConnection(options);
});
afterAll(async () => {
await con.close();
});
}
Я пытаюсь провести модульное тестирование класса, который вызывает хранилище typeorm в одном из его методов и без вызова что вспомогательная функция connectDb () выше, я получаю следующую ошибку, которая, конечно, ожидается.
ConnectionNotFoundError: Соединение "default" не найдено.
У меня вопрос, как я могу издеваться над соединением. Я попробовал следующее без какого-либо успеха
import typeorm, {createConnection} from 'typeorm';
// @ts-ignore
import options from "./../../../ormconfig.js";
const mockedTypeorm = typeorm as jest.Mocked<typeof typeorm>;
jest.mock('typeorm');
beforeEach(() => {
//mockedTypeorm.createConnection.mockImplementation(() => createConnection(options)); //Failed
mockedTypeorm.createConnection = jest.fn().mockImplementation(() => typeorm.Connection);
MethodRepository.prototype.changeMethod = jest.fn().mockImplementation(() => {
return true;
});
});
Запуск тестов с этим типом насмешки дает эту ошибку
Ошибка типа: декоратор не является функцией
Примечание : если я вызываю connectDb () в тестах, все работает нормально. Но я не хочу этого делать, поскольку это занимает слишком много времени, так как некоторые данные вставляются в базу данных перед запуском любого теста. Некоторые коды были опущены для простоты. Любая помощь будет оценена