Actualmente tengo un problema al burlarme de una función dentro de otra biblioteca.
En nuestro equipo, tenemos un proyecto (npm lib, llamémoslo component-lib) con algunos componentes y funciones que utiliza nuestra aplicación principal React. Exponemos las funciones y componentes en un solo archivo JS. (index.js) así:
import { isFeatureEnabled } from './modules/features' import mockComponent from './components/mockComponent' export { isFeatureEnabled, mockComponent }Estoy tratando de simular el valor de retorno de una de las funciones dentro de este componente-lib que está siendo utilizado por la aplicación de reacción principal, mi prueba unitaria es así:
PD: estoy usando Jest y React Testing Library
describe('unit test', () => { jest.mock('component-lib', () => ({ ...jest.requireActual('component-lib'), isFeatureEnabled: jest.fn().mockReturnValue(false) })) it('Should send data', () => { render(<Main />) [... i do some stuff here and trigger the isFeatureEnabled function ...] }) })y el codigo lo uso:
function onSubmitPassword (data) { console.log('is this feature enabled? ', isFeatureEnabled('feature')) // logs as true if (isFeatureEnabled('feature') { ...do this // this is executed } else { do that } }La cuestión es que cuando hago un console.log para ver el valor de isFeatureEnabled, devuelve verdadero en lugar de falso, ignorando el simulacro.
¿Tienen alguna idea de por qué el simulacro no funciona en este caso?
Ya intenté importar la lib como:
import * as components from 'component-lib' jest.mock('component-lib', () => ({ ...jest.requireActual('component-lib'), isFeatureEnabled: jest.fn() })) it('Should send data', () => { isFeatureEnabled.mockReturnValue(false) render(<Main />) [... i do some stuff here and trigger the isFeatureEnabled function ...] })y devuelve un error diciendo que la función solo tiene un getter