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

1.3K
Vistas
¿Cuál es la diferencia entre los métodos jest.fn() y jest.spyOn() en jest?

Estoy escribiendo los casos de prueba unitarios para mi proyecto de reacción y estoy usando bromas y enzimas para escribir casos de prueba. He leído la documentación de broma.

https://jestjs.io/docs/en/jest-object.html#jestspyonobject-methodname

que explica sobre el método jest.spyOn() pero no entendí completamente.

Así que quiero saber más detalles sobre los lugares específicos donde debemos usar jest.fn() y Dónde debemos/debemos usar jest.spyOn() . Sería de gran ayuda si se puede explicar con un ejemplo para ambos métodos.

Gracias

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Mi comprensión simple de estas dos funciones en proyectos de reacción/frontend es la siguiente:

jest.fn()

  • Quiere simular una función y realmente no le importa la implementación original de esa función (será anulada por jest.fn() )
  • A menudo te burlas del valor de retorno
  • Esto es muy útil si desea eliminar las dependencias del backend (por ejemplo, al llamar a la API del backend) o bibliotecas de terceros en sus pruebas.
  • También es extremadamente útil si desea realizar pruebas unitarias reales . No le importa si cierta función que llama la unidad que prueba funciona correctamente, porque eso no es parte de su responsabilidad.

jest.spyOn()

  • La implementación original de la función es relevante para su prueba, pero:
    • Desea agregar su propia implementación solo para un escenario específico y luego restablecerla nuevamente a través mockRestore() (si solo usa un jest.spyOn() sin burlarse más, seguirá llamando a la función original de manera predeterminada)
    • Solo quieres ver si se llamó a la función.
    • ...
  • Creo que esto es especialmente útil para las pruebas de integración, ¡pero no solo para ellas!

(Buena publicación de blog: https://medium.com/@rickhanlonii/understanding-jest-mocks-f0046c68e53c )

over 4 years ago · Santiago Trujillo Denunciar

0

Según tengo entendido, la única diferencia es que USTED PUEDE RESTAURAR LA FUNCIÓN ORIGINAL con jest.spyOn y no puede con jest.fn

Imagine que tenemos un gancho que llama a una función cuando se procesa el componente, aquí podemos verificar que se llamó a la función, no probamos esa función.

Otro caso si queremos función original para probar cómo funciona. Y necesitamos ambos en un archivo de prueba.

verdadero método:

 myMethod() { return 33; }

Con jest.fn()

 const myMethod = jest.fn().mockImplementation(() => 25); const result = myMethod(); expect(result).toBe(25);

En caso de que queramos probar myMethod real ahora, no podemos restaurarlo a la normalidad con jest.fn().

Otra cosa con los espías:

 const spy_myMethod = jest.spyOn(component, "myMethod").mockImplementation(() => 25); const result = myMethod(); expect(result).toBe(25);

Y ahora si queremos el myMethod original

 spy_myMethod.mockRestore(); const result = myMethod(); expect(result).toBe(33);
over 4 years ago · Santiago Trujillo Denunciar

0

jest.fn() es un método para crear un stub, que le permite rastrear llamadas, definir valores de retorno, etc.

jest.spyOn() vino de jasmine, le permite convertir un método existente en un objeto en un espía, que también le permite rastrear llamadas y redefinir la implementación del método original.

Mi regla general sobre esto es: si desea convertir una implementación existente en un espía, use spyOn si está creando un simulacro, use fn() .

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