Вы можете использовать rewire для замены закрытой переменной, определенной в области видимости модуля, на фиктивную.
Текущая версия rewire совместима только с Common JS модули. см. ограничения
Поэтому в приведенном ниже примере измените модуль ES на Общие JS модули.
Например, functions.js
:
let state = 'Monday';
function greet() {
return 'hello ' + state;
}
exports.greet = greet;
functions.test.js
:
const rewire = require('rewire');
const functions = rewire('./functions');
describe('60763037', () => {
test('a', () => {
expect(functions.greet()).toBe('hello Monday');
});
test('b', () => {
functions.__set__('state', 'Tuesday');
expect(functions.greet()).toBe('hello Tuesday');
});
});
Результаты модульных испытаний:
PASS stackoverflow/60763037/functions.test.js
60763037
✓ a (3ms)
✓ b (1ms)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 5.04s