Mock a whole module but retain original module logic. Similar to `jest.spyOn` default behaviour, where the original method is called.

Using `jest.mock` allows performing the assertions needed, but doesn't execute the original logic and sometimes I want that logic to be executed.
Using `jest.spyOn` allows assertion and can execute original logic, but only on named exports of the module, which is generally useful but not when the method is exported as default or like in the sample code below.

```js
// moduleToMock.js
function doSomething(..args) {...}

doSomething.myWay = function myWay(...args) {...}

module.exports = doSomething

// moduleUsingModuleToMock.js
const doSomething = require('moduleToMock')

function doManyThings() {
    doSomething(...)
    doSomething.myWay(...)
}

module.exports = {
    doManyThings,
}

// moduleUsingModuleToMock.test.js
// --
// some way to mock `moduleToMock` that still executes original logic
// --
const doSomething = require('moduleUsingModuleToMock')
it('correctly does many things', () => {
    doManyThings()
    expect(doSomething).toBeCalledWith(...)
    expect(doSomething.myWay).toBeCalledWith(...)
})

```

Maybe I missed something simple, but so far docs or google fu hasn't yielded any results.