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

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

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 Report

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 Report

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 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!