Как исключить импорт сторонних производителей, например jquery, из покрытия кода в карме с использованием isparta?

Я использую карму, веб-пакет и жасмин для проверки своего кода ES6, а Стамбул и Испарта - для покрытия кода. Все мои тесты, похоже, проходят, но охват действительно низкий, потому что мне пришлось импортировать jquery и jquery-resizable-dom, которые включаются в покрытие как непроверенный код.

У меня много ванильного кода JS (~200 строк), но потом добавил что-то вроде этого:

import $ from 'jquery';
require('imports?jQuery=jquery!jquery-resizable-dom');

const makeImagesResizable = () => {
  $('.img').resizable({
    handleSelector: '> .glyphicon-resize-full'
  });
};

export { makeImagesResizable };

И в моем тесте жасмин я импортировал makeImagesResizable чтобы проверить это. Когда я запускаю тест, я получаю примерно 27% покрытия кода, потому что оно включает в себя код jquery. Удаление всего блока кода выше (импорт jquery и всего кода, который использует jquery) увеличивает покрытие до 94%, что ближе к фактическому покрытию (код jquery довольно короткий).

Есть ли способ исключить сторонний импорт из покрытия кода, чтобы отразить числа, которые мы фактически получаем из кода?

Вот мой конфиг кармы также:

const webpack = require('webpack');
const isparta = require('isparta');

module.exports = (config) => {
  config.set({
    frameworks: ['jasmine'],
    files: [
      './spec/*.spec.js',
    ],
    webpack: {
      module: {
        loaders: [
          { test: /\.js$/, loader: 'imports?define=>false!babel' },
        ],
      },
    },
    webpackMiddleware: {
      noInfo: true,
    },
    preprocessors: {
      './spec/*.spec.js': ['webpack', 'coverage'],
    },
    reporters: ['progress', 'coverage'],
    coverageReporter: {
      instrumenters: { isparta },
      reporters: [
        {
          type: 'html',
          dir: 'coverage',
        },
      ],
    },
    browsers: ['Chrome'],
    plugins: [
      'karma-webpack',
      'karma-jasmine',
      'karma-coverage',
      'karma-chrome-launcher',
    ],
  });
};

Я включил только тестовые файлы, так как включение исходных файлов по какой-то причине вообще не возвращает никакого покрытия.

1 ответ

Решение

Цитируя их руководство из http://karma-runner.github.io/1.0/config/configuration-file.html вы можете использовать exclude возможность предотвратить их влияние на ваши результаты.

Другие вопросы по тегам