Использование babel-plugin-rewire для тестирования закрытых функций без ссылок

Я использую babel-plugin-rewire (https://www.npmjs.com/package/babel-plugin-rewire) в main.test.js, чтобы протестировать неэкспортированные функции в main.js. Это работает, за исключением случая, когда функция не указана в main.js; в этом случае я получаю следующую ошибку: TypeError: _get__(...) не является функцией.

Только после того, как я добавлю ссылку на функцию в main.js, я смогу получить к ней доступ в тестовом файле (он работает, даже если я на самом деле не вызываю функцию). Однако я не хочу вносить какие-либо изменения в main.js. Является ли это ожидаемым поведением babel-plugin-rewire, и есть ли обходной путь для этого?

//main.js
function test123() {
    return true;
}
test123; //Cannot access function in test file unless I add this reference!

//main.test.js
const test123 = require('./main').__get__('test123');

test('test123', () => {
  expect(test123()).toEqual(true);
});

person robynl88    schedule 22.11.2019    source источник


Ответы (1)


Вы можете протестировать неэкспортированные функции в main.js, но неэкспортированные функции должны использоваться по крайней мере в одной экспортированной функции в том же файле.

В вашем случае это будет работать без ссылки.

//main.js
export default function foo() {
   test123();
}
function test123() {
    return true;
}
person antonjs    schedule 14.04.2020