Несмотря на то, что вышеописанное работает, это, безусловно, обходной путь, так как мой линтер быстро сообщил.
Я закончил разделение модулей и использовал proxyquire . Эта библиотека позволяет вам легко подставлять любой / любой экспорт в зависимости от ваших предпочтений, шпионов sinon или шпионажа. например :
в b.js
export const fnB = () => 'hey there!';
в a.js
import { fbB } from 'b.js';
export const fnA = () => fbB();
в a.test.js
import { noCallThru } from 'proxyquire';
const proxyquireStrict = noCallThru();
const stubB = stub().returns('forced result');
const moduleA = proxyquireStrict('a.js', {
'b.js' : { fnB: stubB }
}).fnA;
console.log(fnA()); // 'forced result'