Я пытаюсь использовать babel-plugin-rewire, чтобы смоделировать функцию внутри другого файла. Эта функция не экспортируется, но вызывается при экспорте из этого файла по умолчанию.
Метеор 1.6.1
"babel-plugin-rewire": "^ 1.2.0"
meteortesting: mocha@1.1.2
в package.json моего приложения:
"babel": {
"presets": ["latest", "meteor"],
"env": {
"test": {
"plugins": [
"babel-plugin-rewire"
]
}
}
}
В моем parentFunction.js:
import { some function } from 'anotherFile';
function childFunction() {
...
return someValue;
}
export default function parentFunction() {
return childFunction()
}
В моем тестовом файле:
import { childFunction, __RewireAPI__ as MyRewireAPI } from './parentFunction'; // eslint-disable-line import/named
if (Meteor.isServer) {
...
describe('parentFunction', () => {
it('uses the mocked child function', () => {
MyRewireAPI.__Rewire__('childFunction', function () {
return Promise.resolve({ 'name': 'bob' });
});
});
});
}
Когда я запускаю тесты с этой командой:
TEST_WATCH=1 meteor test --driver-package meteortesting:mocha
Все остальные мои тесты пройдены, но этот не пройден с ошибкой:
TypeError: Cannot read property '__Rewire__' of undefined
Я думал, что смысл rewire в том, что он извлекает неэкспортированный модуль из файла, так значит ли это, что rewire не работает? Есть ли что-то еще, что мне нужно сделать, чтобы подключить плагин rewire со встроенным в Metel babel?
Я прочитал документацию и искал другие подобные проблемы, и не вижу, что я делаю неправильно. Буду очень признателен за предложения относительно того, чего мне здесь не хватает.
Редактировать: я понял, что я не устанавливал переменную среды BABEL_ENV в 'test', но теперь я так и есть, и она все еще не работает.