web-dev-qa-db-ja.com

モカのテストディレクトリを指定するにはどうすればいいですか?

Mocha デフォルトでtestの下にテストファイルを見つけようとしますが、どうすれば別のディレクトリを指定できますか。 server-test

190
Freewind

コマンドラインでmochaを実行するだけでそれを実行したいが、./server-testsではなくフォルダ./testでテストを実行したい場合は、次のファイルを./test/mocha.optsに作成します。

server-tests

そのフォルダとサブディレクトリですべてを実行したい場合は、これをtest/mocha.optsに入れます。

server-tests
--recursive

mocha.optsはコマンドラインを介して渡される引数なので、最初の行をテストを変更したいディレクトリにするだけでも./test/からリダイレクトされます。

125
Jeff Dickey

これを使って:

mocha server-test

あるいはサブディレクトリがある場合はこれを使います。

mocha "server-test/**/*.js"

二重引用符の使用に注意してください。それらを省略した場合、サブディレクトリでテストを実行することができないかもしれません。

259
Behrang

テストフォルダにサブフォルダがある場合、これが1つの方法です。

/test
/test/server-test
/test/other-test

それから、Linuxではfindコマンドを使ってすべての* .jsファイルを再帰的にリストしてmochaに渡すことができます。

mocha $(find test -name '*.js')
78
250R

-gや--grepオプションを使用しないでください。そのパターンは、ファイルシステムではなく、その内部のテストの名前で動作します。現在の文書はこれに関して誤解を招くか、または完全に間違っています。コマンド全体をファイルシステムの一部に限定するために、最後の引数としてパターンを渡すことができます(フラグではありません)。

たとえば、次のコマンドはレポーターをspecに設定しますが、server-testディレクトリのすぐ内側にあるjsファイルのみをテストします。

mocha --reporter spec server-test/*.js

このコマンドは上記と同じ動作をします。加えて、it()文字列/テストの定義が "Fnord:"で始まるテストケースのみを実行します。

mocha --reporter spec --grep "Fnord:" server-test/*.js
28
gregtzar

これを行う良い方法は、正しい引数でmochaを呼び出すpackage.jsonに "test" npmスクリプトを追加することです。このようにあなたのpackage.jsonはあなたのテスト構造も記述します。また、他の答え(二重引用符と一重引用符、 "find"など)におけるこれらのクロスプラットフォームの問題をすべて回避します。

Mochaに "test"ディレクトリ内のすべてのjsファイルを実行させるには、次のようにします。

"scripts": {
    "start": "node ./bin/www", -- not required for tests, just here for context
    "test": "mocha test/**/*.js"
  },

それから煙試験だけを走らせるために電話をかける:

npm test

このようにして、すべてのプロジェクトですべてのテストの実行を標準化することができます。そのため、新しい開発者があなたのプロジェクトまたは別のプロジェクトを開始するとき、彼らは "npm test"がテストを実行することを知っています。これには良い歴史的優先順位があります(例えば、Maven、ほとんどの古い学校は "make"プロジェクトも)。すべてのプロジェクトに同じテストコマンドがある場合、CIを確実に支援します。

同様に、モカに実行させたいかもしれないより速い「煙」テストのサブセットがあるかもしれません:

"scripts": {
    "test": "mocha test/**/*.js"
    "smoketest": "mocha smoketest/**/*.js"
  },

それから煙試験だけを走らせるために電話をかける:

npm smoketest

もう1つの一般的なパターンは、テストをテストするソースと同じディレクトリにテストを配置することですが、テストファイルは* .spec.jsと呼びます。例えば、src/foo/foo.jsはsrc/foo/foo.spec.jsによってテストされます。

規約に従って* .spec.jsという名前のすべてのテストを実行するには、次の手順を実行します。

  "scripts": {
    "test": "mocha **/*.spec.js"
  },

それからすべてのテストを実行するために呼び出します。

npm test

ここの模様を見ますか?良い。 :)一貫性が破られる

19
Michael Bushe

test_directoryに一致するサブディレクトリを含むtest.js内のすべてのファイルを実行します

find ./parent_test_directory -name '*test.js' | xargs mocha -R spec

または--recursiveスイッチを使う

mocha --recursive test_directory/
19
Anthony Awuley

私は今この問題を抱えていて、(私が設定した)--recursiveオプションを削除し、上で提案したのと同じ構造を使用することによってそれを解決しました:

mochify "test/unit/**/*.js"

これは/test/unit/内の他のディレクトリを無視しながら私のために/test/の下のすべてのディレクトリですべてのテストを実行しました

10
jfunk

node.jsにある場合、Mocha v6以降のいくつかの新しい構成:

オプション1:プロジェクトのルートディレクトリに.mocharc.jsonを作成します。

{
  "spec": "path/to/test/files"
}

オプション2:プロジェクトのpackage.jsonmochaプロパティを追加します。

{
  ...

  "mocha": {
    "spec": "path/to/test/files"
  }
}

その他のオプションは ここ です。

5
themefield

nodejsを使用している場合は、あなたのpackage.jsonscriptsの下に

  1. global (-g)インストールの場合:サブ文書の場合は"test": "mocha server-test"または"test": "mocha server-test/**/*.js"
  2. projectインストールの場合:サブ文書の場合は"test": "node_modules/mocha/bin/mocha server-test"または"test": "node_modules/mocha/bin/mocha server-test/**/*.js"

それならnpm testとして普通にテストを実行してください。

3
Cozzbie

私はWindows 7上でnode.js v0.10.0とmocha v1.8.2そしてnpm v1.2.14を使っています。私はモカに私のテストを見つけるのにpath test/unitを使わせようとしていました。

"test/unit/*。js"オプションを使用してもWindowsでは機能しません。正当な理由から、Windowsシェルはunixenのようにワイルドカードを展開しません。

ただし、「test/unit」を使用しても、ファイルパターンがなくても機能します。例えば。 "mocha test/unit"はtest/unitフォルダにある全てのファイルを実行します。

これはまだテストとして1つのフォルダファイルのみを実行しますが、パラメータとして複数のディレクトリ名を渡すことができます。

単一のテストファイルを実行するには、フルパスとファイル名を指定することもできます。例えば。 "mocha test/unit/mytest1.js"

私は実際にはnpm "scripts":{"test": "mocha test/unit"}のためにpackage.jsonにセットアップしました。

だから 'npm test'は私のユニットテストを実行します。

3
Robin Luiten

コメントで@superjosによって述べられているように

mocha --recursive "some_dir"

3
avck

@ jeff-dickeyが示唆しているように、プロジェクトのルートにtestというフォルダを作ります。そのフォルダに、mocha.optsというファイルを作成します。私がJeffの答えを改善しようとしたところ、私にはうまくいったのはただ一つのテストフォルダの名前を指定する代わりに、この行を追加することによって私のプロジェクトで実行するすべてのテストを見つけるためのパターンを指定しました。

*/tests/*.js --recursivemocha.opts

あなたが代わりにテストを探すために正確なフォルダを指定したいならば、私はこのようなことをしました:

shared/tests/*.js --recursive
server/tests/graph/*.js --recursive

私はこれが他の答えが提供するもの以上のものを必要としている誰にでも役立つことを願います

2
lwdthe1

これはテストディレクトリを変更するための「簡単な」サポートではないようです。
しかし、多分あなたは質問に関連して この号 を見てみるべきです。

2
Pierre