Quiero probar la función que hace .save en 2 tablas, pero en la segunda consulta tengo que usar la identificación de la primera consulta aquí está mi servicio.
async createBoth(createInput: CreateInput): Promise<SomeThing> { const data = await this.dataRepository.create(createInput); const data2 = { dataId: data.id, someInfo: 'test' }; await this.data2Repository.create2(wallet); } Como puede ver en mi función, tengo 2 consultas, primero guardo en dataReposition , luego guardo en data2Repository usando data.id
Aquí está mi prueba:
describe('create Boath', () => { it('should be createBoth', async () => { await service.createBoth(mockInput); }); });El error aparece:
No puedo crear ambos [porque creo que necesita simular data.id]
Creo que te estás equivocando un poco con las pruebas unitarias. Ofc, todos tienen sus propias preferencias sobre cómo hacerlo... pero en cualquier caso.
Las pruebas unitarias en su forma básica son para probar la lógica de un método en particular, no los métodos que está llamando (en este sentido, escribir código comprobable también es importante).
Entonces, lo que quiere simular en su caso son los 2 objetos a los que se hace referencia como this.dataRepository y this.data2Repository. Esos objetos deben tener los métodos create() burlados.
Esto le permitirá controlar qué datos se devuelven desde la primera llamada y verificar cuáles son los parámetros de llamada para ambas llamadas.
Su prueba debe hacer las verificaciones anteriores; de lo contrario, no está realmente probando mucho, excepto si la llamada falla drásticamente.
Hablando de eso, en su código no usa la constante data2 después de su declaración. ¿Está seguro de que es la variable "billetera" la que necesita pasar a la segunda llamada y no data2?