2017-06-22 11 views
2

私のtypescript/mocha/gulpプロジェクト用のnyc/istanbulで適切なカバレッジを得るのに苦労しています。私はいくつかの方法を試してきましたが、そのうちのいくつかはソースマップを使用できないように見え、その他はts-node/tscというエラーのために失敗します。私の現在の設定は次のとおりです。nyc/istanbulカバレッジレポートをtypescriptで使用するために

nyc関連の設定

"scripts": { 
    "test:coverage": "nyc npm run test:unit", 
    "test:unit": "gulp mocha" 
} 
"nyc": { 
    "check-coverage": true, 
    "all": true, 
    "extension": [ 
     ".js", 
     ".jsx", 
     ".ts", 
     ".tsx" 
    ], 
    "include": [ 
     "src/**/!(*.test.*).[tj]s?(x)" 
    ], 
    "reporter": [ 
     "html", 
     "lcov", 
     "text", 
     "text-summary" 
    ], 
    "report-dir": "docs/reports/coverage" 
    } 

gulpfile.jsmochapackage.jsonに上記の設定カバレッジな生産と関連する部分

const SRC_DIR = path.join(__dirname, 'src'); 
const SRC_FILES = path.join(SRC_DIR, '**', '*.[jt]s?(x)'); 
const TEST_FILES = path.join(SRC_DIR, '**', '*.test.[jt]s?(x)'); 
const MOCHA_CONFIG = { 
    src: [ 
     TEST_FILES 
    ], 
    watchSrc: [ 
     SRC_FILES, 
     TEST_FILES 
    ], 
    mocha: { 
     // compilers: [ 
     //  'ts:ts-node/register', 
     //  'tsx:ts-node/register' 
     // ], 
     require: [ 
      './tests/setup.js', 
      'ignore-styles', 
      'source-map-support/register' 
     ] 
    } 
}; 
gulp.task('mocha', mocha(MOCHA_CONFIG)); 

tsconfig.json

{ 
    "compilerOptions": { 
    "baseUrl": "./", 
    "rootDir": "./src", 
    "outDir": "./build", 
    "allowJs": true, 
    "module": "commonjs", 
    "target": "es5", 
    "lib": ["es5", "es6", "dom"], 
    "sourceMap": true, 
    "inlineSourceMap": false, 
    "inlineSources": false, 
    "experimentalDecorators": true, 
    "noUnusedParameters": true, 
    "noUnusedLocals": true, 
    "jsx": "react", 
    "moduleResolution": "node" 
    }, 
    "exclude": [ 
    "docs", 
    "tests", 
    "**/*.test.js", 
    "**/*.test.jsx", 
    "**/*.test.ts", 
    "**/*.test.tsx", 
    "tools", 
    "gulpfile.js", 
    "node_modules", 
    "build", 
    "typings/main", 
    "typings/main.d.ts" 
    ], 
    "awesomeTypescriptLoaderOptions": { 
    "useCache": true, 
    "useBabel": true 
    } 
} 

すべてのファイルの結果が表示されますが、ソースファイルが使用されていないことが原因です。報告書にはコメントである行は含まれておらず、数字も間違っているようです)。バリアントの数と

は、最も一般的に提案の一つは、まだ、私はすなわちgulpfile.jsdocs/reports/coverage/lcov-report/prettify.jsおよびその他のJSファイルの数文句エラーがnot under 'rootDir'どのように取得していますnyc構成に"require": ["ts-node/register"]を追加することですがない成功を収めてみましアプローチそれでも、ts-nodeが、tsconfig.jsonで除外されていても、srcからすべてのファイルを処理しようとしているのは明らかではありません(構成はまだまだ複雑になります)。

私は、TSファイルの適切なカバレッジレポートを取得するためにどのような方法を使用するかをご理解いただけます。

+0

カバレッジで正しいテストを設定することは時に面倒です。私は、React-TypescriptプロジェクトのためにMocha/Istanbulを使用するのをやめ、イスタンブールが必要とされるJestとts-jest(https://github.com/kulshekhar/ts-jest)に切り替え、Reactテストに必要なものをすべて手に入れました。これは私にとって、異なるバージョン間で安定したスタックです。 –

+0

提案から感謝!実際にこれは私の考慮事項の1つですが、 'jest'が' mocha'と違うので書き直しが必要なのでしょうか? – ciekawy

+0

モカのテストは簡単に冗談に書き換えられます。記述セクションを削除し、それをtest()に変更します。アサーションも異なっています。しかし、前のセクションと後のセクションは同じです。しばらく時間がかかりますが... –

答えて

3

最近、es5の代わりに"target": "es6"tsconfig.jsoncompilerOptionsの代わりに使用することで、満足できる解を見つけました。

test:unitを実行するために使用されているどのような方法である
"test:coverage": "TS_NODE_COMPILER_OPTIONS='{\"target\":\"es6\"}' nyc npm run test:unit", 

:それは、ビルドに影響を与えるtsconfig.jsonに直接targetを変更するオプションではないかもしれないが、他の先端、すなわちとしてpackage.jsonscriptsに直接添加することができるTS_NODE_COMPILER_OPTIONS='{"target":"es6"}を使用することです。私の場合だけgulp mochaの実際のテスト(

注:https://github.com/istanbuljs/nyc/issues/618スレッド上で示唆したように、私はまた、最新の11.1.0と3.3.0ts-nodenycを更新しました

関連する問題