Tengo una prueba que llama a un espía varias veces:
// example.test.js it("Fails but doesn't log all calls", () => { const spy = jest.fn(); spy("1"); spy("2"); spy("3"); spy("4"); spy("5"); expect(spy).toHaveBeenCalledWith("not 1"); }); Jest trunca la salida, por lo que solo las primeras 3 llamadas se enumeran en Received :
// jest example.test.js expect(jest.fn()).toHaveBeenCalledWith(...expected) Expected: "not 1" Received 1: "1" 2: "2" 3: "3" Number of calls: 5 10 | spy("4"); 11 | spy("5"); > 12 | expect(spy).toHaveBeenCalledWith("not 1"); | ^ 13 | }); 14 |¿Cómo puedo obtener la lista completa de llamadas para mostrar en la terminal en caso de fallas de aserción?
Received 1: "1" 2: "2" 3: "3" 4: "4" 5: "5"Simplemente puede registrar en su consola las llamadas simuladas"
const spy = jest.fn(); spy("1"); spy("2"); spy("3"); spy("4"); spy("5"); console.log(spy.mock.calls)DOCUMENTOS -> https://jestjs.io/docs/mock-functions
A partir de junio de 2022 , no es posible utilizar aserciones de broma integradas:
const PRINT_LIMIT = 3 Solución alternativa: escriba un error de aserción personalizado. Ver logCalls :
import { printReceived } from "jest-matcher-utils"; const logCalls = (spy) => { const receivedCalls = spy.mock.calls.map((call, i) => `${i}: ${printReceived(call)}` ) console.error(`All Received:\n${receivedCalls.join("\n")}`) } it("Fails and logs all calls", () => { const spy = jest.fn(); spy("1"); spy("2"); spy("3"); spy("4"); spy("5"); try { expect(spy).toHaveBeenCalledWith("not 1"); } catch (e) { logCalls(spy) throw e } });Lo que generará el siguiente error:
All Received: 0: ["1"] 1: ["2"] 2: ["3"] 3: ["4"] 4: ["5"]