2016-11-28 4 views
1

Я запускаю покрытие теста с кармой/жасмином на моем Угловом проекте и выдаю покрытие в файл ./coverage/coverage.json.Как вы проверяете охват одного файла Стамбулом?

можно затем выполнить команду, как:

./node_modules/istanbul/lib/cli.js check-coverage --lines 90 
Output: ERROR: Coverage for lines (89.1%) does not meet global threshold (90%) 

Это заставляет меня глобальный охват тестирования.

Но я хочу, чтобы проверить покрытие только одного файла. Как мне это сделать?

ответ

0

Он, кажется, не встроен в istanbul, но то, что я могу сделать, это создать резюме JSON и прочитать, что с узлом после запуска его в терминале.

Во-первых, конфигурация Карма должна генерировать сводку JSON с файлами в качестве ключей:

coverageReporter: { 
    reporters: [ 
     {type: 'json-summary', subdir: './', file: 'coverage.json'} 
    ] 
} 

Затем вы можете запустить терминальную задачу, чтобы получить все постановочные файлы в мерзавца.

(gulp karma) 

ROOT_DIR=$(git rev-parse --show-toplevel) 
STAGED_FILES=($(git diff --cached --name-only --diff-filter=ACM | grep ".js$")) 

for file in ${STAGED_FILES}; do 
    echo "gulp coverage -f $ROOT_DIR/$file" 
    git show :$file | gulp coverage -f "$ROOT_DIR/$file" 
done; 

И задача глотка выглядит следующим образом:

gulp.task('coverage', function() { 
    var threshold = 90; 
    var coverageJSON = require('./coverage/coverage.json'); 

    var metrics = [ 'lines', 'statements', 'functions', 'branches' ]; 
    for (var i in metrics) { 
     if (coverageJSON[ argv.f ][ metrics[ i ] ].pct < threshold) { 
      console.log('ERROR:', argv.f, 'does not meet', threshold, 'percent coverage of', metrics[ i ]); 
      process.exit(0); 
     } 
    } 
}); 

Технически, концевая часть может быть сделана с помощью exec в узле, но я хотел команду оболочки, так что я могу сделать, предварительно совершить выполнение.

0

Мне удалось добиться этого с помощью файла конфигурации.

instrumentation: 
    excludes: [ '!yourfile.js' ] 

делает трюк.

Смежные вопросы