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

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

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 Relatório

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 Relatório

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