Tengo una clase de repositorio personalizado que se hereda de BaseRepository exportado en el typeorm-transactional-cls-hooked que a su vez se convierte en un Repository simple de typeorm.
En mi clase de repositorio personalizado, estoy tratando de simular los métodos de create y save , pero la ejecución de la prueba siempre intenta ejecutar esas funciones como si estuviera en un entorno de aplicación real tratando de acceder a una base de datos.
Archivo a probar:
import { DeepPartial } from 'typeorm' import { BaseRepository } from 'typeorm-transactional-cls-hooked' export class TypeOrmBaseRepository<TEntity> extends BaseRepository<TEntity> { createAndSave(entity?: DeepPartial<TEntity>): Promise<TEntity> { return this.save(entity ? this.create(entity) : this.create()) } }Prueba:
import { TypeOrmBaseRepository } from '@infrastructure/adapter/persistence/typeorm/repository/TypeOrmBaseRepository' import { when } from 'ts-mockito' describe('#TypeOrmBaseRepository', () => { let typeOrmBaseRepository: TypeOrmBaseRepository<any> beforeEach(() => { typeOrmBaseRepository = new TypeOrmBaseRepository() }) it('', () => { when(typeOrmBaseRepository.createAndSave()).thenResolve(() => { return { save: () => 'saved' } }) const result = typeOrmBaseRepository.createAndSave() console.log('result', result) }) })El error:
ConnectionNotFoundError: Connection "default" was not found. at ConnectionNotFoundError.TypeORMError [as constructor] (src/error/TypeORMError.ts:7:9) at new ConnectionNotFoundError (src/error/ConnectionNotFoundError.ts:8:9) at ConnectionManager.Object.<anonymous>.ConnectionManager.get (src/connection/ConnectionManager.ts:42:19) at Object.getManager (src/globals.ts:107:35) at Object.<anonymous>.exports.getEntityManagerOrTransactionManager (node_modules/typeorm-transactional-cls-hooked/src/common.ts:25:27) at TypeOrmBaseRepository.get (node_modules/typeorm-transactional-cls-hooked/src/patch-typeorm-repository.ts:11:14) at TypeOrmBaseRepository.Object.<anonymous>.Repository.create (src/repository/Repository.ts:99:21) at TypeOrmBaseRepository.createAndSave (src/infrastructure/adapter/persistence/typeorm/repository/TypeOrmBaseRepository.ts:6:58) at Object.<anonymous> (test/unit/infrastructure/adapter/persistence/typeorm/entity/executed-message/repository/TypeOrmBaseRepository.spec.ts:12:32)¿Cómo me burlo de la conexión typeorm o del repositorio para que esto funcione?