TypeScriptをJestと組み合わせて使用すると、私の仕様は次のようなエラーメッセージで失敗します。
test/unit/some.spec.ts:1:1 - error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
test/unit/some.spec.ts:2:3 - error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
test/unit/some.spec.ts:3:7 - error TS2304: Cannot find name 'expect'.
test/unit/some.spec.ts:7:1 - error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
タイプはすでにインストールされています。
私が使う:
"@types/jest": "^23.3.12",
"jest": "^23.6.0",
"ts-jest": "^23.10.5",
"TypeScript": "^3.1.6"
jest --forceExit --coverage --verbose
を使用してテストを実行します
私の場合、問題は1つの特定のファイルにありました。問題自体は見つかりませんでしたが、ファイルのインポートにimport {} from 'jest'
を追加することで解決しました。
Jest issue trackerまたはSOまたは他の方法で解決できなかった他の方法はありません。クレイジーな回避策によってクレイジーなバグが修正されましたか???? ♂️
はい、もちろん、最新のjest
、ts-jest
、@types/jest
をもちろんpackage.jsonに追加しました
これを解決するための簡単なチェックリスト(TypeScriptおよびJestの場合)。
@types/jest
および@types/node
がインストールされていることを確認してください。tsconfig.json
でリンクしていることを確認してください:types: ["jest", "node"]
excluded
プロパティのtsconfig.json
設定からテストまたはテストディレクトリを除外しないでくださいであることを確認してください。別のtsconfig.json
テストフォルダ__tests__
:
{
"extends": "../tsconfig.json",
"compilerOptions": {
"baseUrl": "./",
"outDir": "../build",
"noEmit": true,
"rootDir": "../",
},
"exclude": ["node_modules"],
}
これは、ルートフォルダーの1つを拡張します。
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"outDir": "./lib",
"rootDir": "./src",
"strict": true,
"noImplicitAny": true,
"esModuleInterop": true,
},
"exclude": ["node_modules", "**/*.test.ts", "__tests__"]
}
この方法では、ファイルをテストしてもパブリックビルドから除外されますが、一般的なオプションはすべて共有されます。