Как включить babel-plugin-rewire в Метеоре - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь использовать 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', но теперь я так и есть, и она все еще не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...