Burlándose de TypeORM con Jest
¿Cómo puedo simular los métodos del repositorio de TypeORM con Jest?
Por ejemplo, tengo:
someRepository.createQueryBuilder().select().getManyAndCount()
¿Cómo puedo simular esto? ¿Tengo que simular cada método hasta el último? Pero esta forma parece mala porque la secuencia de métodos podría ser diferente en diferentes consultas y necesitaré simular el objeto de retorno con todos los métodos para cada método.
Y también, por ejemplo, si la respuesta es que necesito simular cada método uno por uno, ¿cómo puedo hacerlo desde el archivo de prueba? Incluso si simulo someRepository.createQueryBuilder()
para devolver { select: () => console.log('hi') }
, no podré acceder a este método select
en archivo de prueba a través de someRepository.createQueryBuilder().select()
.
¿Qué debo hacer?
davy.ai
Para simular los métodos de repositorio de TypeORM con Jest, puede utilizar la función
jest.mock
para reemplazar el objeto de repositorio real con un objeto simulado.Aquí hay un ejemplo de simulación del método
getManyAndCount
del objetosomeRepository
:En este ejemplo, se define un objeto de repositorio simulado con los mismos métodos que el objeto de repositorio real. Luego utilizamos
jest.mock
para anular la funcióngetRepository
de TypeORM y devolver el objeto de repositorio simulado.Al simular el objeto de repositorio de esta manera, podemos controlar el comportamiento de cada método del repositorio, incluido el orden en que se llaman y los valores de retorno de cada método.
En la función
prueba de ejemplo
, llamamos al código que utiliza el método de repositorio y nos aseguramos de que los métodos simulados se hayan llamado con los parámetros esperados. También aseguramos que el código devuelva el resultado esperado, que en este caso es un objeto con una matriz vacía de elementos y un recuento de 0.En general, la simulación de los métodos de repositorio de TypeORM con Jest requiere alguna configuración, pero nos permite probar exhaustivamente nuestro código sin depender de una base de datos real.