web-dev-qa-db-ja.com

Jest使用時の「test / expect / etc is not defined」エラーを防止

FacebookのJestテストフレームワークは簡単です はじめに、しかしドキュメント 見落とす 迷惑な側面 :テストステートメントは、未定義のシンボルを警告しようとするエディターによってエラーとして強調表示されますtestexpect、およびすべてのマッチャーメソッドが定義されていないため。

WebStorm highlights errors in Jest test file

同様に、nodeを使用してテストファイルを直接実行しようとすると、ReferenceError: test is not definedで失敗します。

これらのエラーを解消するには、どのrequire/importステートメントを追加する必要がありますか?

17
Dan Dascalescu

Node

それらをノードから直接実行したい場合は、-requirejestjest-runtimeを試してください。 @types/jestも試してみてください。

これに関する新しい情報については編集2を確認してください

編集

@types/jestjest-DefinitelyTyped)は絶対に必要(または1つのソリューション)です。 インストールする(例:dev依存関係)の場合、IDEエラーはなくなるはずです。Webstormで試したところ、うまくいきました。

編集2

新しいJest @ 20 Matchers(たとえば、.resolvesおよび.rejects)は、@types/jestではまだ定義されていません。以下のリンクでそのステータスを追跡できます: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/16645https://github.com/DefinitelyTyped/DefinitelyTyped/ issues/168

しかし、すぐに利用可能になるはずです!

また、ノードから直接実行することはできないようです。昨夜私はたくさんのことを試しましたが、jestを使用するのが一番です-これは実際にはノードを内部で使用していますなので、それも可能だと思いました。 @ thymikee GitHubで未解決の問題について、それがそうではないことを明らかにしました。

編集

新しいリリース(20.0.1)には、最新のJest定義が含まれています。

リント

これはこの特定の問題の範囲外ですが、それも役立ちます

ESLintのようなものを使用していますか?その場合、eslint-plugin-jestが必要になります

このページで説明されている手順に従ってください: https://www.npmjs.com/package/eslint-plugin-jest 、基本的にそれをESLintプラグインとして追加し、jestグローバルをESLint構成:

{
  "env": {
    "jest/globals": true
  }
}

ES6テストのサポートを計画している場合は、Babelおよびbabel-jestプラグインと次のjest設定も必要です。

"transform": {
  "^.+\\.js$": "babel-jest"
}

最後に、TypeScriptテストの場合、@types/jestおよびts-jestパッケージも必要になります。

23
Apidcloud

私はVSCodeとESLintを使用しています。インストールする必要があります eslint-plugin-jest

.eslintrc.jsにjest情報を追加します

{
  "plugins": ["jest"]
},
"env": {
  "jest/globals": true
}
14
onmyway133

以下の.eslintrc構成を追加するだけで十分です

{"env": 
  {
    "jest": true
  }
}
1