Tengo una prueba que requiere que el valor de isBanana sea false .
La prueba funciona (y isBanana es false ) cuando me burlo de la función en el nivel superior index.test.js . Sin embargo, esto rompe otras pruebas (ya que requieren que isBanana sea true ).
jest.mock("myapp-api-functions", () => { console.log(`executing mock function`); return { ...jest.requireActual("myapp-api-functions"), isBanana: false, }; }); Si muevo jest.mock() al cuerpo de la prueba, isBanana es true y la prueba no funciona.
it(`should error when someone tries to use the mock account in production`, async () => { jest.mock("myapp-api-functions", () => { console.log(`executing mock function`); return { ...jest.requireActual("myapp-api-functions"), isBanana: false, }; }); ...same test function that previously passed... });El simulacro no funciona y la prueba falla.
¿Cómo puedo burlarme del valor primitivo para una sola prueba?
Las llamadas a jest.mock se elevan a la parte superior del bloque de código.
Para evitar este comportamiento, puede usar jest.doMock por ejemplo
it(`should error when someone tries to use the mock account in production`, async () => { jest.doMock("myapp-api-functions", () => { console.log(`executing mock function`); return { ...jest.requireActual("myapp-api-functions"), isBanana: false, }; }); // Same test function that previously passed... });Esto le permitirá especificar un comportamiento simulado para una prueba específica.