PS: теперь я рекомендую использовать одиночный jest вместо мокко. / instanbul / nyc / chai / и т. д.
Настройка (не забудьте @next
для nyc
):
npm install --save-dev nyc babel-plugin-istanbul babel-register
Добавьте env в babel
config:
{
"env": {
"nyc": { "plugins": ["istanbul"] }
}
}
nyc
конфигурация:
{
"reporter" : ["text", "text-summary", "lcov", "html"],
"include" : ["src/**/*.js"],
"require" : ["babel-register"],
"sourceMap" : false,
"instrument" : false,
"all" : true
}
PS: поле include
необходимо указать в .nycrc
из package.json
, если оно указано в командной строке, покрытие не будет работать
Запуск тестов:
# 1. Build
NODE_ENV=nyc babel src --out-dir lib
# 2. Coverage
nyc mocha
Решение B: Никаких дополнительных пакетов: только базовые
Work has been done recently on istanbul (1.0.0-alpha.2) to support Babel generated code with sourcemaps (see #212 and this for an example).
Есть 2 способа:
- A. Тесты, написанные для ранее перенесенного кода
- Б. Тесты, написанные на основе исходного кода и перенесенные в память во время выполнения
B1. Тесты, которые экспортируют (ранее) транспилированный код
Это делается в два шага: во-первых, создайте свой исходный код с помощью babel (например, от ./src до ./out) и напишите свои тесты на основе транспилированного источника (export foo from "./out/foo";
).
После этого вы сможете запускать тесты, используя istanbul 1.0.0- alpha.2:
istanbul cover _mocha -- ./test --compilers js:babel-register
Теперь, если вы хотите, чтобы покрытие кода соответствовало написанному вами исходному коду (а не транслированному), обязательно используйте параметры исходных карт babel установлены на оба:
babel ./src --out-dir ./out --source-maps both
PS: При необходимости вы также можете:
istanbul cover _mocha -- ./test --compilers js:babel-register \
--require babel-polyfill \
--require should \
--require sinon
БИ 2. Тесты, которые напрямую экспортируют исходный код
В этом случае вы пишете свои тесты на основе исходного кода (export foo from "./src/foo";
), и без дальнейших шагов вы напрямую запускаете istanbul 1.0.0-alpha.2 с использованием babel-node против cli.js:
babel-node ./node_modules/istanbul/lib/cli.js cover _mocha -- ./test
PS: При необходимости вы также можете:
babel-node ./node_modules/istanbul/lib/cli.js cover _mocha -- ./test
--require babel-polyfill \
--require should \
--require sinon
person
Yves M.
schedule
13.03.2016