4

I have the following scenario:

const doSomething = () => {
    const test = 1;

    doAnotherThing();
    return test + 1;
};

const doAnotherThing = () => {};

module.exports = {
    doSomething,
    doAnotherThing
};

And here is my test:

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);
    });
});

Question, is there a way for the call doAnotherThing() inside the doSomething() be spied by jest in some way, without using solutions like rewire?

Iuri
  • 166
  • 1
  • 9

1 Answers1

2

Found the solution here: https://medium.com/welldone-software/jest-how-to-mock-a-function-call-inside-a-module-21c05c57a39f

Redefined my module to this and now it's working

const doSomething = () => {
    const test = 1;

    MyModule.doAnotherThing();
    return test + 1;
};

const doAnotherThing = () => {};

const MyModule = {
    doSomething: doSomething,
    doAnotherThing: doAnotherThing
};

export default MyModule;
Iuri
  • 166
  • 1
  • 9