Тестирование модулей ES 2015 с Mocha - PullRequest
1 голос
/ 10 апреля 2019

Мне только что был назначен проект на работе, который использует сырой собственный импорт / экспорт (поддерживает только самые последние браузеры), большая часть которого пишется некоторыми консультантами (я не могу их запустить или изменить большие куски проект / набор инструментов). Я предпочитаю запускать свои тесты в node.js везде, где это возможно (используя jsdom при необходимости), и обычно несколько раз в минуту (т.е. они должны быть быстрыми). Я сильно предпочитаю не нажимать на вкладку браузера, чтобы просматривать результаты каждые несколько секунд.

Из-за некоторых технологических решений, сделанных консультантами вопреки нашим пожеланиям (длинная история), я должен использовать mocha и chai для тестов (я привык к Jasmine и Jest), и у них нет настройки тестирования / настройки рабочего процесса тестирования ( опять же, я не могу уволить их из рук).

При поиске я нашел этот вопрос и его ответы. Многие из предложений устарели, или для более старых версий, например. столпотворение.

Наконец-то наступил момент, когда у меня установлены и готовы к работе @ babel / core, @ babel / register и @ / babel / preset-env.

Итак, я

mocha --require @babel/register path/to/test.js

С соответствующей предустановкой в ​​.babelrc, и я получаю

регенераторRuntime не определен

По-видимому, он пытается заполнить async / await, даже если узел его поддерживает.

Мне не нужно , нужно для преобразования каждого аспекта современного синтаксиса, мне нужно только изменить операторы импорта / экспорта на module.exports и require. Я действительно не хочу иметь накладные расходы на дополнительные преобразования / полизаполнения, я просто пытаюсь выполнить некоторые тесты здесь. Я добавил @ babel / polyfill только для того, чтобы он работал, но могу ли я просто настроить его для преобразования только операторов импорта / экспорта?

1 Ответ

1 голос
/ 11 апреля 2019

Вы можете добавить targets к @babel/preset-env, чтобы сообщить ему, на какую среду нацеливаться.

В этом случае вы захотите настроить таргетинг на текущую версию Node.js.:

presets: [
  [
    '@babel/preset-env',
    {
      targets: {
        node: 'current',
      },
    },
  ],
  ...
]
...