Karma:コマンドラインから単一のテストファイルを実行する


93

だから、私はこれを探し回っていましたが、ここで「類似した」答えが見つかりましたが、私が望んでいるものとは厳密には一致していません。

カルマで単一のファイルをテストしたい場合はfit()fdescribe()問題のファイルに対してを実行する必要があります...

ただし、私がしたいのは、設定ファイルを使用してカルマを呼び出し、特定のファイルに転送できるようにすることです。そのため、ファイルを変更する必要はありません。

karma run --conf karma.conf.js --file /path/to/specific/test_file.js

これを行うことは可能ですか?またはヘルパーと一緒に?(うなり声または一口を使用して?)


1
試しましたkarma run -- --grep=testDescriptionFilterか?これは以前に提案されたのを見たことがありますが、それが機能することを直接確認することはできません。(私が家にいた場合、提案する前に試してみます。試すことができないので、答えるのではなくコメントします。):)
bvaughn

1
それは特定のもののためではありませんitか?ファイルに使用する可能性はありませんか?
–GonçaloVieira 2015

3
正直に言うと、単一のテストファイルに集中したい場合は、常にkarma.confを変更しました。これを行うのは簡単で、私はこれまでよりも速い方法を見つけるために努力を費やしたことがありません。
bvaughn 2015年

1
ホットドッグ。それが助けてうれしい。投稿しました。:)
ブヴォーン

回答:


59

最初に、あなたはカルマサーバーを起動する必要があります

karma start

次に、grepを使用して特定のテストをフィルタリングしたり、ブロックを記述したりできます。

karma run -- --grep=testDescriptionFilter

12
この回答は、karma実行するkarma start前に実行する必要があることを示しているはずですkarma run
etagwerker '17 / 07/17

4
質問ででフィルタリングする方法について尋ねられたので、私はそれが必要だとは本当に思っていませんkarma run。投稿者はKarmaを起動してすべてのテストを実行する方法を知っていて、フィルタリングに関する構文を探しているだけであることは明らかでした。
bvaughn 2015

2
これをプログラムで実行するにはどうすればよいですか?つまり、変更されたファイルの説明はわかりませんが、ファイル名はわかります。
MPV 2016年

2
このソリューションは、Jasmineテスト(karma-jasmine)ではまったく機能しないようです。また、karma run --helpは--grepをコマンドオプションとしてまったく表示しません。Karmaの最新バージョンを使用しています(1.5.0と表示されています)。
Yavin5

9
これは単一のテストを実行しません!
eavの

16

にもかかわらず--files、もはやサポートされている、あなたは、ファイルのリストを提供するために、ENV変数を使用することができます。

// karma.conf.js
function getSpecs(specList) {
  if (specList) {
    return specList.split(',')
  } else {
    return ['**/*_spec.js'] // whatever your default glob is
  }
}

module.exports = function(config) {
  config.set({
    //...
    files: ['app.js'].concat(getSpecs(process.env.KARMA_SPECS))
  });
});

次にCLIで:

$ env KARMA_SPECS="spec1.js,spec2.js" karma start karma.conf.js --single-run

1
これでうまくいきました!デフォルトのグロブの前にディレクトリ名があることを確認してください。そうしないと、パターンエラーが発生します。また、files:定義を次のように変更しました:files:[] .concat(getSpecs(process.env.KARMA_SPECS))、そして環境変数が存在しない場合、関数はすでにglobパターンをそこに配置しているので、うまくいきましたセットする。ああ、私はあなたがコマンドの前に "env"が必要だとは思いません(それは私のためにそれなしで動作します)。このソリューションをありがとう@Yuriy Kharchenko!
Yavin5 2017年

6

このオプションは、最近のバージョンのkarmaではサポートされなくなりました。

https://github.com/karma-runner/karma/issues/1731#issuecomment-174227054を参照してください

ファイル配列は、CLIを使用して次のように再定義できます。

karma start --files=Array("test/Spec/services/myServiceSpec.js")

またはエスケープ:

karma start --files=Array\(\"test/Spec/services/myServiceSpec.js\"\)

参考文献


2
私にこのエラーを与えます
-bash

5
だから、これを試してみると、次のエラーが出ます:config.files = config.files.map(createPatternObject).map(createPatternMapper(basePathResolve))requireJSを使用していることが原因の可能性がありますか?
ゴンサーロビエラ

1
erm、requireJSのせいではなく、何らかの奇妙な理由で、karmaがArray( "zzz")をJS配列として読み取っていませんか?O_o
ゴンサロビエイラ

2
nm、karmaが--files argをサポートしていないようですか?
–GonçaloVieira 2015

23
誰もが、このオプションはもはやカルマでサポートされてここに来ないための警告:github.com/karma-runner/karma/issues/...
dignifiedquire
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.