Tengo un problema con una prueba en React.JS. Mi componente escanea una imagen de código QR, uso esta dependencia: https://www.npmjs.com/package/qr-scanner con la versión 1.4.1
esta es mi prueba
describe("BarcodeScanner", () => { it("can scan qr code image", async () => { const handleOnScan = jest.fn(); render(<BarcodeScanner image={image} onScan={handleOnScan} />); expect(await handleOnScan).toHaveBeenCalled(); }); });Paso prop image que es una imagen con código qr, y paso onScan que es una función de la broma. Esta función debe llamarse después de escanear una imagen.
Este es mi componente:
const scanImage = (image: string) => { QrScanner.scanImage(image,{ returnDetailedScanResult: true }) .then((result) => { onScan(result.data); }) .catch((error) => { if (onError) { onError(error || "No QR code found"); } }); };Mi prueba no está pasando porque la función de broma no está llamando. Resultado de la prueba
Tiene un simulacro incorrecto para onScan y no está esperando los resultados. La acción se resuelve en el siguiente "tick" no al instante. Creo que esto debería funcionar (no probado)
describe('BarcodeScanner', () => { it('can scan qr code', async () => { const handleOnScan = jest.fn(); render(<BarcodeScanner image={image} onScan={handleOnScan} />); await waitFor(() => expect(handleOnScan).toHaveBeenCalled()); }); });