ノードライブラリを一緒に正しく動作させるのに疲れています...しかし、それは仕事の一部なので、ここに行く...カルマで一緒に働くブラウジング、ベベル、カバレッジを取得する方法
ブラウザ用のES6アプリケーションがあります。私は、私のアプリケーションがES5で書かれた時から持ち出している私のファイルのための単体テストのセットを持っています。私はbrowserifyを使ってモジュールのインポート/エクスポートやディストリビューションのバンドルを扱います。これは、ブラウザでアプリケーションを実行するときに問題なく動作します。私は正常にソースと仕様ファイルをブラウズしてテストを実行することができ、テストに合格します。私は非常に、この作業を得ることに非常に近いです。
唯一の問題はカバレッジです。
require('/absolute/path/to/the/corresponding/file.js');
とそれぞれがちょうど1行であるため、適用範囲は明らかに、すべてのファイルのための100%として示しています。私が来た最も近いが、それぞれが次のようになり、ファイルを、生成されたカルマ-browserifyのカバレッジを示しています
これは私のkarma.conf.jsです:私は本当にこれらのライブラリのいずれかがどのように機能するか見当がつかないので、私はどこにこれをデバッグで起動するかわからない
import babelify from 'babelify';
import isparta from 'isparta';
import paths from './paths';
var normalizeBrowserName = (browser) => browser.toLowerCase().split(/[ /-]/)[0];
export default function(config) {
config.set({
basePath: '..',
browsers: ['PhantomJS'],
frameworks: ['browserify', 'jasmine'],
files: paths.test.files,
preprocessors: {
'app/**/*.js': ['browserify', 'sourcemap', 'coverage'],
[paths.test.testFiles]: ['babel'],
},
plugins: [
'karma-babel-preprocessor',
'karma-browserify',
'karma-coverage',
'karma-jasmine',
'karma-junit-reporter',
'karma-phantomjs-launcher',
'karma-sourcemap-loader',
],
autoWatch: false,
colors: false,
loggers: [{ type: 'console' }],
port: 9876,
reporters: ['progress', 'dots', 'junit', 'coverage'],
junitReporter: {
outputFile: paths.test.resultsOut,
suite: '',
},
browserify: {
debug: true,
noParse: paths.js.noparse(),
configure: (bundle) => {
bundle.once('prebundle',() => bundle.transform(babelify.configure({ ignore: 'lib/!**!/!*' })));
},
},
coverageReporter: {
instrumenters: { isparta },
instrumenter: {
[paths.test.cover]: 'isparta',
},
reporters: [
{ type: 'text', },
{ type: 'html', dir: paths.test.coverageOut, subdir: normalizeBrowserName },
{ type: 'cobertura', dir: paths.test.coverageOut, subdir: '.', file: 'coverage.xml' },
],
},
logLevel: config.LOG_DEBUG,
});
};
。私は、プリプロセッサの順序が重要であることを理解しています。そのため、browserifyはソースファイル上で動作し、生成されたリンクファイルをソースマップジェネレータに送り、ソースマップジェネレータはその結果をカルマカバレッジに送ります。しかし、browserifyとカバレッジを処理するものとの間の通信の損失があります。 isparta(舞台裏でイスタンブールを使用している)は、browserifyが動作していることを知らないし、何が見えるのかわからない。
私は真剣にこのようなものがどのように動作するのかわからないので、この時点で私は散歩しています。
コード化されたモジュール化されたES6をテストした経験がある人は、正しい軌道上にいるかどうか教えてください。
html出力を除外/インポートするように圧縮されているので、すべてのファイルが真でないときにすべてのファイルにテストがあると表示されます。 htmlレポートのすべてのファイルに 'typeof require ===" function "&& require(MY-FILE)' – Cyberdelphos