Tengo el siguiente escenario:
const doSomething = () => { const test = 1; doAnotherThing(); return test + 1; }; const doAnotherThing = () => {}; module.exports = { doSomething, doAnotherThing };Y aquí está mi prueba:
const MyModule = require('./myModule'); describe('MyModule', () => { it('Should be able to spy another call', () => { const spy = jest.spyOn(MyModule, 'doAnotherThing'); MyModule.doSomething(); expect(spy).toHaveBeenCalledTimes(1); }); });Pregunta, ¿hay alguna manera de que la llamada doAnotherThing() dentro de doSomething() sea espiada por broma de alguna manera, sin usar soluciones como rewire?
Encontré la solución aquí: https://medium.com/welldone-software/jest-how-to-mock-a-function-call-inside-a-module-21c05c57a39f
Redefinido mi módulo a esto y ahora está funcionando
const doSomething = () => { const test = 1; MyModule.doAnotherThing(); return test + 1; }; const doAnotherThing = () => {}; const MyModule = { doSomething: doSomething, doAnotherThing: doAnotherThing }; export default MyModule;