Jasmineの上に構築されたJavascript Jestテストフレームワークでコードをカバーする方法はありますか?
内部フレームワーク しない 取得したコードカバレッジを出力します。また、 イスタンブール 、 ブランケット 、および JSCover を使用してみましたが、いずれも機能しません。
Jest 21.2.1を使用すると、コマンドラインでコードカバレッジを確認し、--coverage
をJestスクリプトに渡すことでカバレッジディレクトリを作成できます。以下に例を示します。
Jestをローカルにインストールする傾向があります。その場合、コマンドは次のようになります。
npx jest --coverage
Jestをグローバルにインストールした場合、これも機能すると思います(確認はしていませんが)。
jest --coverage
非常にまばらなドキュメントは ここ です
coverage/lcov-reportディレクトリに移動すると、index.htmlブラウザにロードできるファイル。コマンドラインに印刷された情報に加えて、追加情報といくつかのグラフィック出力が含まれていました。
更新:2018年7月20日-リンクを追加し、coverageReportersの名前を更新しました。
更新:2017年8月14日-この回答は完全に時代遅れです。 Jestのドキュメントをご覧ください。彼らはこれを行う方法についての公式サポートとドキュメントを持っています。
@hankhsiaoには、イスタンブールがJestと協力している分岐レポがあります。これをdev依存関係に追加します
"devDependencies": {
"jest-cli": "git://github.com/hankhsiao/jest.git"
}
また、package.json jestエントリでカバレッジが有効になっていることを確認し、必要な形式を指定することもできます。 (htmlはかなり悪いロバです)。
"jest": {
"collectCoverage": true,
"coverageReporters": ["json", "html"],
}
Jest documentationcoverageReporters を参照してください(デフォルトは["json", "lcov", "text"]
です)
または、jestを呼び出すときに--coverage
を追加します。
最近この質問を探している人にとっては、特にnpmまたはyarnを直接使用してテストする場合
現在、構成オプションを変更する必要はありません
jest公式ウェブサイト に従って、次のようにしてカバレッジレポートを生成できます。
jestの--coverage引数を渡す前に--
を配置する必要があります
npm test -- --coverage
--coverage
を使用せずに--
を直接呼び出そうとすると、動作しません
Jestの--coverage
引数を直接渡すことができます
yarn test --coverage
さて、問題が解決しなかったと誰かに言われたので、以前の答えを無視してください。
新しい回答:
1)最新のjest(v 0.22)を確認します: https://github.com/facebook/jest
2)Facebookチームは、カバレッジレポートの一部としてイスタンブールを配置し、直接使用できます。
3)jestを実行すると、コンソールでカバレッジレポートを取得でき、jestによって設定されたルートフォルダーの下に、jsonおよびhtml形式のカバレッジレポートが表示されます。
4)参考までに、npmからインストールすると、最新バージョンを取得できない場合があります。最初にgithubを試して、カバレッジが必要なものであることを確認してください。
古い答え:
同様に同じ問題が発生しました。簡単な答えは:Istanbul
とJest
は一緒に動作していません。
詳細については、次のページを確認してください。
https://github.com/facebook/jest/issues/101
jestは、ネイティブコードのV8コンテキストでJSスクリプトを実行するcontextifyを使用するため、イスタンブールのrequireおよびvm.runInThisContextフックをすべてバイパスします。したがって、標準のフック可能なnode.js関数が使用されておらず、すべてのテストが独自のサンドボックスで実行され、カバレッジオブジェクトをスタッシュするグローバルがないため、イスタンブールカバーは機能しません。
@Ciro Costa:config.collectCoverage
は、「TODO」関数なので機能していません。ソースコードを確認してください。
私は同じ問題を抱えていて、以下のように修正しました。
npm install --save-dev yarn
をインストールしますnpm install --save-dev jest-cli
をインストール"jest-coverage": "yarn run jest -- --coverage"
テストを記述した後、コマンドnpm run jest-coverageを実行します。これにより、ルートディレクトリにカバレッジフォルダーが作成されます。 /coverage/icov-report/index.htmlには、コードカバレッジのhtmlビューがあります。
ハッピーコーディング!
--coverageが機能しないという問題がある場合は、 'text'または 'text-summary'を追加せずにcoverageReportersを有効にしている可能性もあります。ドキュメントから:「注:このオプションを設定すると、デフォルト値が上書きされます。「text」または「text-summary」を追加して、コンソール出力にカバレッジサマリーを表示します。」 ソース