Как исключить импорт сторонних производителей, например 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
возможность предотвратить их влияние на ваши результаты.