При создании модульных тестов для typeorm я хочу смоделировать свое соединение с базой данных, чтобы я мог запускать модульные тесты, даже не подключаясь к БД (хорошо!)
Я вижу места, где люди издеваются над репозиториями typeorm, используя testdouble (который я тоже использую), но я пытаюсь сделать это с помощью getManager, и у меня возникает проблема с выяснением, как заставить это работать.
Вот пример. У меня есть класс, который в конструкторе создает EntityManager с помощью getManager() для соединения под названием "test":
export class TestClass {
constructor() {
const test: EntityManager = getManager('test');
}
}
Теперь я хочу проверить, что я могу просто создать этот класс. Вот пример (с использованием mocha, chai и testdouble):
describe('data transformer tests', () => {
it('can create the test class', () => {
// somehow mock getManager here
const testClass: TestClass = new TestClass();
chai.expect(testClass, 'could not create TestClass').to.not.be.null;
});
});
Когда я пытаюсь это, я получаю это сообщение об ошибке от typeorm:
ConnectionNotFoundError: Connection "test" was not found.
Вот некоторые из вещей, которые я пытался издеваться над getManager:
td.func(getManager)
та же ошибка, что и выше.
td.when(getManager).thenReturn(td.object('EntityMananger'));
получает сообщение:
Error: testdouble.js - td.when - No test double invocation call detected for 'when()'.
Любые идеи, что за волшебный соус здесь для насмешки getManager
?