Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

206
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda