Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

207
Vistas
Depuración de simulacros de broma

Tengo una biblioteca que me está dando algunos problemas en mis pruebas de broma.

Esta biblioteca está incluida en todo mi proyecto y tiene una función annoyingFunction que contiene un error de console.error . Entonces, cada vez que ejecuto una prueba, naturalmente recibo mensajes de error de console.error no deseados por todas partes.

No quiero burlarme de toda la biblioteca, solo la annoyingFunction , así que puse esto en mi archivo de configuración:

 jest.mock('myLibrary', () => ({ ...jest.requireActual('myLibrary'), annoyingFunction: jest.fn(), }));

Esto se está ejecutando, sin embargo, todavía se está llamando a la función annoyingFunction original, contaminando mis pruebas con llamadas de console.error .

Si registro mi simulacro en la consola, veo claramente annoyingFunction: [Function: mockConstructor] , por lo que el simulacro funciona, pero por alguna razón, la función original de la biblioteca aún se está llamando.

¿Que me estoy perdiendo aqui? ¿Hay algún problema con mi configuración inicial del simulacro?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Podría haber un par de cosas mal, pero supongo que la annoyingFunction se llama internamente dentro de la biblioteca. Considere el siguiente ejemplo, que no hace lo que podría esperar:

foo.js

 function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } function multiply(a, b) { let total = 0; for (let i = 0; i < b; i++) { total = add(total, a); } return total; } export { add, subtract, multiply };

foo_test.js

 import * as Operations from "./foo.js"; jest.mock("./foo.js", () => ({ ...jest.requireActual("./foo.js"), add: () => -999, })); describe("all the things", () => { // Here, the mock does what you would expect, because you're calling the // exported function "add." it("can add", () => { expect(Operations.add(1, 2)).toEqual(-999); }); it("can subtract", () => { expect(Operations.subtract(1, 2)).toEqual(-1); }); // Here, the mock doesn't do what you would expect. because unbeknownst to // you, `multiply` calls `add` _within_ the module code. The mock has no // effect in this case. it("can multiply", () => { expect(Operations.multiply(1, 2)).toEqual(2); }); });

No estoy muy seguro de lo que puede hacer al respecto, excepto simular los métodos exportados de la biblioteca hasta que pueda controlar el resultado.

O... puede jest.spyOn console.error cualquier prueba que le esté dando problemas y luego restablecer el espía .

 const consoleErrorSpy = jest.spyOn(console, "error"); //...do your test... consoleErrorSpy.mockRestore();

¡Espero que ayude!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda