I found out a good way to mock named exports, based on this answer: https://stackoverflow.com/a/38414108/4644522
codeToTest.js:
import {someMethod} from './someNamedExports'
export default () => someMethod()
codeToTestSpec.js:
import * as someNamedExports from './someNamedExports'
import codeToTest from './codeToTest
sinon.stub(someNamedExports, 'someMethod')
codeToTest()
someNamedExports.someMethod.should.have.been.called
someNamedExports.someMethod.restore()
And this works as expected.
However, I seem to be running into issues with default exports. Here is what I have tried:
codeToTest.js:
import someDefaultExport from './someDefaultExport
export default () => someDefaultExport()
codeToTestSpec.js:
import * as someDefaultExport from './someDefaultExport'
import codeToTest from './codeToTest
sinon.stub(someDefaultExport, 'default')
codeToTest()
someDefaultExport.default.should.have.been.called
someDefaultExport.default.restore()
It doesn't seem to be stubbing it as expected and complains about someDefaultExport.default not being defined when trying to restore.
Am I missing something or is this a possible bug with sinon?