22

最近、Mocha の助けを借りて Node プロジェクトの単体テストを開始しました。これまでのところ順調に進んでおり、テストでカバーするすべての角度について考えているうちに、コードが大幅に改善されていることがわかりました。

ここで、私の経験をチームの他のメンバーと共有し、彼らが独自のテストを実行できるようにしたいと思います。共有したい情報の一部は、私のコードが実際にどれだけカバーされているかということです。

以下は、さまざまなコンポーネントまたはモジュールに分割したアプリケーション構造のサンプルです。再利用を促進するために、すべての依存関係を最小限に抑え、コンポーネント フォルダーに分離しようとしています。test/これには、プロジェクト ルートのデフォルト フォルダーではなく、テストを分離したままにすることも含まれます。

| app/
| - component/
| -- index.js
| -- test/
| ---- index.js

現在、私のpackage.json見た目はこんな感じです。私はイスタンブールをいじっていますが、それに縛られているわけではありません。また、同様のレベルの成功でブランケットを使用してみました.

{
  "scripts": {
    "test": "clear && mocha app/ app/**/test/*.js",
    "test-cov": "clear && istanbul cover npm test"
}

コマンドをそのまま実行するtest-covと、Istanbul から次のエラーが表示されます (これは役に立ちません)。

No coverage information was collected, exit without writing coverage information

私の質問は次のとおりです。現在のアプリケーション構造と環境を考えると、Istanbul (または別のツール) を使用してコード カバレッジを正しくレポートするにはどうすればよいですか?


TL;DR

Node、Mocha、および現在のアプリケーション構造を使用してコード カバレッジをレポートするにはどうすればよいですか?


編集

明確にするために、Mocha はこの現在の状態で正しくテストを実行しています。コード カバレッジ レポートを取得することは、私が仕事に取り掛かるのに苦労していることです。

編集2

別の質問が既に私の質問に回答している可能性があるという通知を受け取りました。それは、イスタンブールをインストールしてcoverコマンドを実行することを提案しただけでした。別の提案では、テスト コマンドを で実行することを推奨しています_mocha。これは、私が行ったいくつかの調査によると、Istanbul が Mocha 用のフラグを飲み込むのを防ぐためのものであり、Mocha の新しいバージョンでは必要ありません。

4

3 に答える 3

1

.istanbul.ymlファイルが必要です。私はそれへの言及を見ません - それの内容を知らずに言うのは難しい. 質問でこれを解決するのに十分な情報があるとは思いません。特に報奨金の期限が切れる前に質問を更新すると、この回答を更新しますね。

于 2015-06-06T20:15:00.047 に答える
0

これは、すべてのjsプロジェクトでコードカバレッジを取得する方法です(Sachacrのもののように見えます):

istanbul cover _mocha -- -R spec --recursive test
于 2015-06-06T15:11:29.883 に答える