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

852
Vistas
¿Cómo restablecer o borrar un espía en Jest?

Tengo un espía que se usa en múltiples aserciones a través de múltiples pruebas en una suite.

¿Cómo borro o reseteo el espía para que en cada prueba se considere que no se ha invocado el método que intercepta el espía?

Por ejemplo, ¿cómo hacer que la afirmación en 'does not run method' sea verdadera?

 const methods = { run: () => {} } const spy = jest.spyOn(methods, 'run') describe('spy', () => { it('runs method', () => { methods.run() expect(spy).toHaveBeenCalled() //=> true }) it('does not run method', () => { // how to make this true? expect(spy).not.toHaveBeenCalled() //=> false }) })
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Gracias a @sdgluck por la respuesta, aunque me gustaría agregar a esta respuesta que, en mi caso, quería un estado claro después de cada prueba, ya que tengo varias pruebas con el mismo espía. Entonces, en lugar de llamar a mockClear() en las pruebas anteriores, lo moví a afterEach() (o puede usarlo con beforeEach ) así:

 afterEach(() => { jest.clearAllMocks(); });

Y finalmente, mis pruebas funcionan como deberían sin que se llame al espía de la prueba anterior. También puede leer su documentación para ello.

opcion 2

Si desea hacerlo desde un nivel global, también puede actualizar su jest.config.js (o desde package.json )

 module.exports = { clearMocks: true, // ... }

Puedes leer la documentación de Jest al respecto.

over 4 years ago · Santiago Trujillo Denunciar

0

Los espías de broma tienen la misma API que los simulacros. La documentación para simulacros está aquí y especifica un método mockClear que:

Restablece toda la información almacenada en las matrices mockFn.mock.calls y mockFn.mock.instances .

A menudo, esto es útil cuando desea limpiar los datos de uso de un simulacro entre dos afirmaciones .

(énfasis mío)

Entonces podemos usar mockClear para "restablecer" un espía. Usando tu ejemplo:

 const methods = { run: () => {} } const spy = jest.spyOn(methods, 'run') describe('spy', () => { it('runs method', () => { methods.run() expect(spy).toHaveBeenCalled() //=> true /* clean up the spy so future assertions are unaffected by invocations of the method in this test */ spy.mockClear() }) it('does not run method', () => { expect(spy).not.toHaveBeenCalled() //=> true }) })

Aquí hay un ejemplo en CodeSandbox .

over 4 years ago · Santiago Trujillo Denunciar

0

En caso de que desee restaurar el comportamiento original de un método que había agregado previamente a un espía, puede usar el método mockRestore.

Mira el ejemplo a continuación:

 class MyClass { get myBooleanMethod(): boolean { return true; } } const myObject = new MyClass(); const mockMyBooleanMethod = jest.spyOn(myObject, 'myBooleanMethod', 'get'); // mock myBooleanMethod to return false mockMyBooleanMethod.mockReturnValue(false); // restore myBooleanMethod to its original behavior mockMyBooleanMethod.mockRestore();
over 4 years ago · Santiago Trujillo 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