25

Jest React チュートリアルから React Example を実行しようとしていますが、エラーが発生します

λ npm test                                          

> ...                           
> jest                                              

Found 1 matching tests...                           
 FAIL  __tests__\CheckboxWithLabel-test.js (0.551s) 
npm ERR! Test failed.  See above for more details.  
npm ERR! not ok code 0   

例からコードを直接コピーしました。package.json は次のとおりです。

{
  "dependencies": {
    "react": "*",
    "react-tools": "*"
  },
  "scripts":{
    "test": "jest"
  },
  "jest": {
    "scriptPreprocessor": "<rootDir>/preprocessor.js",
    "unmockedModulePathPatterns": [
      "<rootDir>/node_modules/react"
    ]
  },
  "devDependencies": {
    "jest-cli": "~0.1.17"
  }
}

これらのエラーを解決し、サンプル テストを正常に実行するためにできることについて何か考えはありますか? 重要な詳細 (または詳細) が欠けている可能性は非常に高いですが、完全にはわかりません。ああ、それが価値があるのは、それがこれに影響を与える場合、私はこれを Windows で実行しています。反応コンポーネントでいくつかのテストを取得したいと本当に思っています(そこでも問題があったため、基本的な例から始めました)-どんな助けもいただければ幸いです:)

4

3 に答える 3

5

これについての検索でここにたどり着いた人にとって、@ ronのgithubの問題は最終的に解決され、結論は、 unmockedModulePathPatterns はファイルパスに一致する正規表現ステートメントの配列を期待しており、必ずしもファイルパス自体ではありません。これが、「相対」パスの使用が機能した理由です。Jest API ドキュメントから:

モジュールローダーが自動的にそれらのモックを返す前に、すべてのモジュールに対して照合される正規表現パターン文字列の配列。モジュールのパスがこのリストのいずれかのパターンに一致する場合、モジュール ローダーによって自動的にモックされることはありません。

これは、ほぼ常に実装の詳細として使用される、一般的に使用されるいくつかの「ユーティリティ」モジュール (アンダースコア/ローダッシュなど) に役立ちます。一般に、このリストをできるだけ小さく保ち、個々のテストで明示的な jest.mock()/jest.dontMock() 呼び出しを常に使用することがベスト プラクティスです。明示的なテストごとのセットアップは、テストの他の読者にとって、テストが実行される環境について推論するのがはるかに簡単です。

テスト ファイルの先頭で jest.mock() を明示的に呼び出すことにより、個々のテストでこの設定をオーバーライドすることができます。

( https://facebook.github.io/jest/docs/api.html#config-unmockedmodulepathpatterns-array-string )

そして問題自体から:

unmockedModulePathPatterns は、必要なすべてのモジュールがテストされる RegExp を作成するために Jest によって内部的に使用されます。そのため、有効な正規表現パターンを提供する必要があります。たとえば、これは私にとってうまくいきました:

> unmockedModulePathPatterns: [
>       "node_modules\\" + path.sep + "react",
>       "node_modules\\" + path.sep + "reflux",
>       "node_modules\\" + path.sep + "react-router"
>     ],
于 2015-05-04T19:33:28.280 に答える