私はカルマ、ウェブパック、ジャスミンを使用してES6コードをテストしており、コードカバレッジにはistanbulとispartaを使用しています。私のテストはすべて合格したようですが、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
してテストしました。テストを実行すると、カバレッジにjqueryコードが含まれているため、27%のコードカバレッジが得られます。上記のコードブロック全体(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',
],
});
};
ソースファイルを含めても何らかの理由でカバレッジがまったく返されないため、テストファイルのみを含めました。
彼らのガイドブックをhttp://karma-runner.github.io/1.0/config/configuration-file.htmlから引用すると、exclude
オプションを使用して、結果に影響を与えないようにすることができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加