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
Mi comprensión simple de estas dos funciones en proyectos de reacción/frontend es la siguiente:
jest.fn()jest.fn() )jest.spyOn()mockRestore() (si solo usa un jest.spyOn() sin burlarse más, seguirá llamando a la función original de manera predeterminada)(Buena publicación de blog: https://medium.com/@rickhanlonii/understanding-jest-mocks-f0046c68e53c )
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);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() .