Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!