私はkarma、webpack、jasmineを使用してES6コードをテストしています。コードカバレッジのためにistanbulとispartaを使用しています。私のテストはすべて成功したようですが、jqueryとjquery-resizable-domをインポートしなければならなかったので、カバレッジは実際には低くなりました。ispartaを使用してkarmaのコードカバレッジからjqueryのようなサードパーティのインポートを除外するにはどうすればいいですか?
私は、バニラの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',
],
});
};
私は唯一のソースファイルを含むので、テストファイルを含め、何らかの理由でまったく報道を返しません。
ええ、私はちょうどそれも見つけました。私はspartaの代わりにbabel-istanbul-loaderを使うことにしました。ありがとう! – meyagen