web-dev-qa-db-ja.com

jestテストを/ testフォルダーに移動して実行するにはどうすればよいですか?

Jestは、テストが__tests__フォルダーにあるか、blah.test.jsという名前であることを期待しています。どちらのパターンも好きではありません。テストファイルを/testおよびそれらに名前を付けるtest/index.ios.test.jsは冗長でばかげているようです。この最初のスタブは、package.jsonのjest設定を次のように変更することです。

"jest": {
    "testPathDirs": ["test"],
    "testRegex": "\\.(js|jsx)$",
    "preset": "react-native"
}

テストは成功しますが、すべて失敗します。

Cannot find module 'setupDevtools' from 'setup.js'

  at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:151:17)
  at Object.<anonymous> (node_modules/react-native/jest/setup.js:23:1)

その関数はnode_modules/react-native/Libraries/Core/Devtools/setupDevtools.js。ジェストにどこにあるのか教えてください。

14
jcollum

正規表現を設定してすべてを検出することで問題を解決しました.jsファイルを./testフォルダ:

"jest": {
   "preset": "react-native",
    "globals": {
        "__DEV__": true
    },
    "testRegex": "./test/.*.js$",
    "rootDir": "."
 },

(jcollum here:わからない__DEV__は実際にそこで実行していますが、そうでない場合はエラーがスローされます。 jest 17.0.3)

13

これを行う最善の方法は testMatch を設定することだと思います。デフォルトは次のとおりです。

[ "**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]

したがって、__tests__ to testsまたは両方をチェックする配列に新しいエントリを追加します。私はpackage.jsonで以下を使用します:

  "jest": {
    "testMatch": [ "**/tests/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)" ]
  },
4
Jiert