Recibo un error justo en esta parte de mi código. Received promise resolved instead of rejected y no estoy seguro de cómo manejar esto, ¿alguien puede ayudarme?
it("should not create a media if the user doesn't exist", async () => { user.user= undefined; await usersRepository.save(user); await expect( createMedia.execute({ userId: user.id, type: 'video', media: 'video-media', description: 'description', }), ).rejects.toBeInstanceOf(AppError); });Y:
expect(received).rejects.toThrow() Received promise resolved instead of rejected Resolved to value: {"description": "description", "id": "id number", "media": "video-media", "userId": "id user", "type": "video"}Su código está creando una promesa exitosa, que luego prueba contra un rechazo, por lo que falla porque se ejecuta con éxito y le dice que espera que falle.
Cuando usa .rejects , le está diciendo a la expect que espera que falle y sea rechazado, en este caso está teniendo éxito. Si cambia eso a resolves en lugar de rejects , funcionará.
O debe asegurarse de que la consulta que está realizando falle, es decir, actualizando algo que no existe.
Otra forma es ejecutar realmente su consulta, obtener el resultado y luego hacer una expect esperada en los datos devueltos.
Para mayor claridad, una promesa normal se ve así:
const example = () => new Promise((resolve, reject) => ... Luego puede llamar a esos métodos de resolución y rechazo dependiendo de si la promesa se resolvió correctamente o si falló, puede llamar al rechazo. Cuando usa .resolves o .rejects en broma, está probando esos métodos de resolución y rechazo en la promesa.
Cuando usa una función async , en realidad no ve eso, pero está haciendo lo mismo.
Lo que es más, cuando los usuarios cargan más archivos de los que realmente pueden, se romperá, razón por la cual en su caso en realidad no falla, porque en realidad es rechazado.