253

Mochaはデフォルトでテストファイルを検索しようとしますがtest、別のディレクトリを指定するにはどうすればよいserver-testですか?

4

15 に答える 15

315

これを使って:

mocha server-test

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

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

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

于 2013-11-11T09:04:29.220 に答える
153

編集:このオプションは非推奨です:https ://mochajs.org/#mochaopts


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

server-tests

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

server-tests
--recursive

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

于 2014-08-06T01:36:01.523 に答える
84

テストフォルダにサブフォルダがある場合の1つの方法は次のとおりです。

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

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

mocha $(find test -name '*.js')
于 2012-05-25T12:17:37.760 に答える
46

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

mochaに「test」ディレクトリ内のすべてのjsファイルを実行させるには:

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

次に、スモークテストの呼び出しのみを実行します。

npm test

この方法ですべてのプロジェクトのすべてのテストの実行を標準化できるため、新しい開発者がプロ​​ジェクトなどで開始したときに、「npmtest」がテストを実行することがわかります。これには歴史的に優れた優先順位があります(たとえば、ほとんどの古い学校の「make」プロジェクトもMavenです)。すべてのプロジェクトに同じテストコマンドがある場合、CIに役立ちます。

同様に、mochaに実行させたいより高速な「スモーク」テストのサブセットがある場合があります。

"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

ここのパターンを見ますか?良い。:)一貫性はを打ち負かします。

于 2018-06-18T05:22:26.067 に答える
29

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

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

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

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

mocha --reporter spec --grep "Fnord:" server-test/*.js
于 2012-10-24T23:08:39.140 に答える
29

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

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

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

オプション2:mochaプロジェクトにプロパティを追加しますpackage.json

{
  ...

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

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

于 2019-04-14T22:25:33.057 に答える
20

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

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

または--recursiveスイッチを使用します

mocha --recursive test_directory/
于 2017-06-15T17:15:23.027 に答える
20

現在、日(2020年)は、 mocha構成ファイルを使用してこれを処理できます。

ステップ1:アプリケーションのルートの場所に.mocharc.jsファイルを作成します

ステップ2:mocha設定ファイルに以下のコードを追加します。

'use strict';

module.exports = {
  spec: 'src/app/**/*.test.js'
};

構成ファイルのその他のオプションについては、次のリンクを参照してください:https ://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js

于 2020-01-16T14:06:52.160 に答える
11

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

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

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

于 2015-08-03T18:29:14.897 に答える
4

コメントで@superjosが述べたように、

mocha --recursive "some_dir"

于 2017-05-25T11:53:14.850 に答える
3

私は、node.jsv0.10.0とmochav1.8.2およびnpmv1.2.14を使用しているWindows7を使用しています。私はモカにパステスト/ユニットを使って自分のテストを見つけさせようとしていました。長い時間をかけて着陸したいくつかのことを試した後、

「test/unit / *。js」オプションの使用は、Windowsでは機能しません。Windowsシェルがunixenのようなワイルドカードを拡張しないという正当な理由があります。

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

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

また、単一のテストファイルを実行するために、フルパスとファイル名を指定できます。例えば。「mochatest/unit/mytest1.js」

私は実際にpackage.jsonでnpm"scripts":{"test": "mocha test / unit"}、

そのため、「npmtest」は単体テストを実行します。

于 2013-03-18T13:31:58.247 に答える
3

を使用している場合はnodejspackage.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

于 2017-04-30T23:42:00.427 に答える
2

これは、テストディレクトリを変更するための「簡単な」サポートではないようです。ただし、質問に関連して、この問題
を確認する必要があるかもしれません。

于 2012-05-25T12:08:35.937 に答える
2

@ jeff-dickeyが提案したように、プロジェクトのルートに、という名前のフォルダーを作成しますtest。そのフォルダに、というファイルを作成しますmocha.opts。ジェフの答えを改善しようとすると、1つのテストフォルダーの名前を指定する代わりに、次の行を追加して、プロジェクトで実行するすべてのテストを検索するパターンを指定しました。

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

代わりに、テストを検索する正確なフォルダーを指定する場合は、次のようにします。

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

これが、他の回答が提供する以上のものを必要としている人に役立つことを願っています

于 2018-05-29T15:22:17.250 に答える
0

Windowsの別のオプションは、cross-envパッケージを使用し、次のnpmスクリプトを使用することです。package.json

"scripts": {
    "test": "cross-env mocha '*.test.js'"
  },
"devDependencies": {
    "cross-env": "latest",
}

この場合、ルートフォルダにパターン* .test.jsがあるすべてのテストファイルは、mochaによって実行されます。

于 2022-01-28T22:03:25.350 に答える