Como zombar de funções no mesmo módulo usando jest

Qual é a melhor maneira de zombar corretamente do exemplo a seguir?

O problema é que, após o tempo de importação,foo mantém a referência ao original desmontadabar.

module.js:

export function bar () {
    return 'bar';
}

export function foo () {
    return `I am foo. bar is ${bar()}`;
}

module.test.js:

import * as module from '../src/module';

describe('module', () => {
    let barSpy;

    beforeEach(() => {
        barSpy = jest.spyOn(
            module,
            'bar'
        ).mockImplementation(jest.fn());
    });


    afterEach(() => {
        barSpy.mockRestore();
    });

    it('foo', () => {
        console.log(jest.isMockFunction(module.bar)); // outputs true

        module.bar.mockReturnValue('fake bar');

        console.log(module.bar()); // outputs 'fake bar';

        expect(module.foo()).toEqual('I am foo. bar is fake bar');
        /**
         * does not work! we get the following:
         *
         *  Expected value to equal:
         *    "I am foo. bar is fake bar"
         *  Received:
         *    "I am foo. bar is bar"
         */
    });
});

Obrigado!

EDIT: Eu poderia mudar:

export function foo () {
    return `I am foo. bar is ${bar()}`;
}

para

export function foo () {
    return `I am foo. bar is ${exports.bar()}`;
}

mas isso é p. feio na minha opinião para fazer em qualquer lugar: /

questionAnswers(6)

yourAnswerToTheQuestion