Иони c 4 Покрытие кода Карма генерирует HTML файл без данных - PullRequest
2 голосов
/ 17 января 2020

Запуск ng test --code-coverage в моей папке проекта Ioni c создает папку покрытия со всеми необходимыми файлами html / css / js. Файл lcov.info содержит данные испытаний, но в файлах html нет значений.

Один пример строки из index.html:

<tr>
    <td class="file high" data-value="src"><a href="src/index.html">src</a></td>
    <td data-value="" class="pic high"><div class="chart"><div class="cover-fill" style="width: 0%;"></div><div class="cover-empty" style="width:100%;"></div></div></td>
    <td data-value="" class="pct high">%</td>
    <td data-value="" class="abs high">/</td>
    <td data-value="" class="pct high">%</td>
    <td data-value="" class="abs high">/</td>
    <td data-value="" class="pct high">%</td>
    <td data-value="" class="abs high">/</td>
    <td data-value="" class="pct high">%</td>
    <td data-value="" class="abs high">/</td>
</tr>

Это файл в браузере: generated-html-file-in-browser

Кажется, что стиль получил информацию из данных lcov, потому что цвета соответствуют данным, которые я получаю через терминал:

----------------------------------------------------|----------|----------|----------|----------|-------------------|
File                                                |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------------------------------------------------|----------|----------|----------|----------|-------------------|
All files                                           |    49.75 |    10.77 |    38.67 |    48.13 |                   |
 src                                                |      100 |      100 |      100 |      100 |                   |
  polyfills.ts                                      |      100 |      100 |      100 |      100 |                   |
  test.ts                                           |      100 |      100 |      100 |      100 |                   |
  zone-flags.ts                                     |      100 |      100 |      100 |      100 |                   |
 src/app                                            |      100 |      100 |      100 |      100 |                   |
  app.component.ts                                  |      100 |      100 |      100 |      100 |                   |
 src/app/calendar                                   |    16.56 |        0 |     8.89 |    16.44 |                   |
  calendar.page.ts                                  |    16.56 |        0 |     8.89 |    16.44 |... 24,425,426,427 |
 src/app/calendar/assignment                        |      100 |      100 |      100 |      100 |                   |
  assignment.component.ts                           |      100 |      100 |      100 |      100 |                   |
 src/app/calendar/resource                          |      100 |      100 |      100 |      100 |                   |
  resource.component.ts                             |      100 |      100 |      100 |      100 |                   |
 src/app/calendar/resource-selection                |       75 |      100 |       40 |    72.73 |                   |
  resource-selection.component.ts                   |       75 |      100 |       40 |    72.73 |          32,34,35 |
[...]

Вот моя конфигурация кармы:

module.exports = function(config) {
  config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma'),
    ],
    client: {
      clearContext: false, // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, './coverage'),
      reports: ['html', 'lcovonly', 'text'],
      fixWebpackSourcePaths: true,
    },
    reporters: ['progress', 'kjhtml'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false,
  });
};

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 10 марта 2020

Проблема вызвана рулем lib. Регрессия была введена в последней версии. Итак, чтобы это исправить (как обходной путь до исправления lib на руле) - вы можете либо вручную установить рабочую версию руля и добавить ее в devDependencies, например, так: npm i -D handlebars@4.1.2, либо изменить версию руля на правильную в своем npm-shrinkwrap.json / package-lock.json вот так:

         "handlebars": {
-            "version": "4.7.3",
-            "integrity": "sha1-js4nl4Johs+AgtFyb/IdKgIlUO4=",
+            "version": "4.1.2",
+            "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
             "requires": {

enter image description here

0 голосов
/ 11 февраля 2020

К сожалению, мне не удалось сгенерировать HTML представление результатов полного покрытия кода. Однако я смог создать текстовый формат и cobertura (Junit) для интеграции CI / CD.

My karma.conf. js:

Part 1

Part 2

Part 3

...