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

185
Vistas
Simule solo una función del módulo pero deje el resto con la funcionalidad original

Solo quiero simular una sola función (llamada exportación) de un módulo, pero dejar intactas el resto de las funciones del módulo.

Usar jest.mock('package-name') hace que todas las funciones exportadas se simulan, lo cual no quiero.

Intenté distribuir las exportaciones nombradas de nuevo en el objeto simulado...

 import * as utils from './utilities.js'; jest.mock(utils, () => ({ ...utils speak: jest.fn(), }));

pero obtuve este error:

La fábrica de módulos de jest.mock() no puede hacer referencia a ninguna variable fuera del alcance.

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

0

Lo más destacado de esta respuesta es jest.requireActual() , esta es una utilidad muy útil que dice en broma que "Oye, mantén intactas todas las funcionalidades originales e impórtalas".

 jest.mock('./utilities.js', () => ({ ...jest.requireActual('./utilities.js'), speak: jest.fn(), }));

Tomemos otro escenario común, estás usando la enzima ShallowWrapper y no funciona bien con el gancho useContext(), entonces, ¿qué vas a hacer? Si bien estoy seguro de que hay varias formas, pero esta es la que me gusta:

 import React from "react"; jest.mock("react", () => ({ ...jest.requireActual("react"), // import and retain the original functionalities useContext: jest.fn().mockReturnValue({foo: 'bar'}) // overwrite useContext }))

La ventaja de hacerlo de esta manera es que aún puede usar import React, { useContext } from "react" en su código original sin preocuparse por convertirlos en React.useContext() como lo haría si estuviera usando jest.spyOn( Reaccionar, 'usarContexto')

over 4 years ago · Santiago Trujillo Denunciar

0

La forma más sencilla es usar jest.spyOn y luego .mockImplementation() . Esto permitirá que todas las demás funciones en el módulo continúen funcionando como están definidas.

Para paquetes:

 import axios from 'axios'; jest.spyOn(axios, 'get'); axios.get.mockImplementation(() => { /* do thing */ });

Para módulos con exportaciones con nombre:

 import * as utils from './utilities.js'; jest.spyOn(utils, 'speak'); utils.speak.mockImplementation(() => { /* do thing */ });

Documentos aquí: https://jestjs.io/docs/en/jest-object#jestspyonobject-methodname

over 4 years ago · Santiago Trujillo Denunciar

0

Para mí esto funcionó:

 const utils = require('./utilities.js'); ... jest.spyOn(utils, 'speak').mockImplementation(() => jest.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