Relaciones Mocking en TypeOrm + NestJS
Estoy teniendo dificultades para probar un servicio NestJS que utiliza una entidad simple que solo tiene una relación. Sin embargo, la entidad relacionada está relacionada con muchas otras entidades que a su vez también están relacionadas con otras entidades. No quiero importar todas las entidades y pasarlas a TypeOrmModule.forRoot
, y si no lo hago, obtengo un error como el siguiente:
La metadatada de la entidad 'Wallet#customer' no se ha encontrado.
Para cada entidad que no se ha importado. ¿Es posible “simular” la relación de alguna manera?
Prueba:
javascript
const module: TestingModule = await Test.createTestingModule({
imports: [
TypeOrmModule.forRoot(CONNECTION_OPTIONS),
TypeOrmModule.forFeature([WalletEntity, WalletTransactionEntity]),
],
providers: [WalletService],
}).compile();
Entidad:
javascript
@Entity('wallet')
export class WalletEntity extends BaseEntity {
@Column()
customerId: string;
@OneToOne(() => CustomerEntity, (customer) => customer.wallet)
customer: CustomerEntity;
@OneToMany(() => WalletTransactionEntity, (transaction) => transaction.wallet)
transactions: WalletTransactionEntity[];
}
davy.ai
Para evitar importar todas las entidades y obtener errores como “No se encontraron metadatos de entidades para x”, puede utilizar la función
getRepository
de TypeORM para simular la relación. Aquí hay un ejemplo:En este ejemplo, se utiliza
getRepositoryToken
para obtener el token del repositorioWalletEntity
, que luego se proporciona como un valor simulado en el array deproviders
del módulo de prueba. La funciónfindOne
del repositorio luego se simula para devolver laWalletEntity
con los datos deCustomerEntity
relacionados.