Мокко не распознает глобальную переменную при запуске тестов - PullRequest
0 голосов
/ 04 июня 2018

В моем приложении я установил глобальную переменную в своем собственном файле.Это прекрасно работает в моем приложении, но нарушает мои модульные тесты для файлов, которые в этом нуждаются.

Это в основном на корневом уровне и в своем собственном файле, который выглядит примерно так:

global.MY_GLOBAL_VAR = require('my-global-var').MY_GLOBAL_VAR

Это позже импортируется в мой файл, который необходимо протестировать, и, как уже упоминалось ранее, работает нормально, когда приложение работает нормально.Так это будет выглядеть примерно так:

// doSomething.js
require('MY_GLOBAL_VAR')

module.exports = function doSomething () {
// do stuff
}

Поэтому, когда я пытаюсь написать модульный тест для doSomething.js, я получаю следующую ошибку:

    1) "before all" hook
    GET /
     { TypeError: MY_GLOBAL_VAR is not a constructor

Когда я делаюНа нем console.log, его значение возвращается как undefined.Интересно, что если я запускаю node doSomething, то MY_GLOBAL_VAR будет таким, как ожидалось (что является функцией).

Я попытался немного изменить мою первоначальную команду тестирования, но безрезультатно.Вот как это выглядит в настоящее время:

"test": "mocha --- globals MY_GLOBAL_VAR -require @ babel / register --require dotenv / config --require ./MY_GLOBAL_VAR.js --watch-extensions js \ "{,! (node_modules) / ** /} *. test.js \" "

(Первоначально у него не было аргументов --globals или требованияMY_GLOBAL_VAR file.

Есть идеи, как это решить?

1 Ответ

0 голосов
/ 04 июня 2018

Я нашел решение проблемы.Это не mocha, который не распознал глобальную переменную, но babel.

Ничего не нужно было менять в package.json, я смог вернуть свой тестовый сценарий обратно к первоначальному состоянию.

Все, что нужно было сделать, это добавить файл MY_GLOBAL_VAR.js в список ignore в моем файле .babelrc.Итак, в основном:

// in .babelrc
{
  "plugins": [
     // [...] my plugins
  ],
  "ignore": [
    "./MY_GLOBAL_VAR.js"
  ],
  "presets": [
    "@babel/preset-env"
  ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...