Как смоделировать соединение типа - PullRequest
0 голосов
/ 23 марта 2020

В интеграционных тестах я использую следующие фрагменты для создания соединения

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 () в тестах, все работает нормально. Но я не хочу этого делать, поскольку это занимает слишком много времени, так как некоторые данные вставляются в базу данных перед запуском любого теста. Некоторые коды были опущены для простоты. Любая помощь будет оценена

...