【Jest_66】 ReferenceError: describe is not defined の対処法
以下は、Jest や Node.js テスト実行時に多くの人が直面するエラー
ReferenceError: describe is not defined
ReferenceError: describe is not defined
結論(まずこれをチェック)
このエラーは主に以下のどれかが原因です:
1. Jestが動いていない
describe は Jest のグローバル関数
Jest経由で実行せよ
2. 実行コマンドが node
node test.js は NG
npx jest や npm test で実行
3. テスト環境の設定漏れ
jest.config.js 未設定
設定ファイルで testEnvironment など確認
4. VSCodeで補完されない
型補完が効かない
tsconfig.json の types を確認
5. グローバルスコープ外で呼んでいる
describe を関数スコープ外に書いてる
スコープ構造を見直し
エラーの全文(例)
ReferenceError: describe is not defined
at Object.<anonymous> (/path/to/your/test.js:2:1)describe とは何か?
describe は Jest(やMochaなど)が提供するテストブロックの定義関数です:
describe('MyComponent', () => {
test('does something', () => {
expect(1 + 1).toBe(2);
});
});つまり、Jestなどのテストランナー経由で実行しなければ存在しない関数なのです。
間違った実行例
node myTestFile.test.js ❌ ← これが原因!ts-node myTestFile.test.ts ❌ ← JestのAPIがない!✅ 正しい実行方法(Jest)
npx jest ✅ 最短
npm run test ✅ package.jsonにscriptがある場合
yarn jest例:package.json の script に登録
{
"scripts": {
"test": "jest"
}
}対処法ステップ by ステップ
1. Node実行をやめる
NG:
node sample.test.jsOK:
npx jest理由:Node.js単体では describe や test は定義されていません。
2. Jest の依存を確認
npm ls jest未インストールなら:
npm install --save-dev jest3. ファイル名の命名規則を確認
Jestはデフォルトで以下の名前のファイルをテスト対象と認識します:
*.test.js
*.spec.js例:
src/__tests__/myUtil.test.ts4. TypeScript 対応:ts-jest 導入
npm install --save-dev ts-jest @types/jest
npx ts-jest config:initjest.config.js
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
};5. tsconfig.json に型を補完させる
{
"compilerOptions": {
"types": ["jest"]
}
}補完されないと describe や expect に赤線が出る原因になります。
6. IDEで Jest プラグインを有効に(VSCode)
VSCode 拡張:「Jest」「Jest Runner」などをインストール
エディタで右クリック →「Jestでテストを実行」
7. Babelを使っている場合の注意
npm install --save-dev babel-jest @babel/preset-envbabel.config.js に以下を追加:
module.exports = {
presets: ['@babel/preset-env'],
};テンプレ:テストファイル例(動作確認用)
// math.test.ts
describe('Math tests', () => {
test('1 + 1 = 2', () => {
expect(1 + 1).toBe(2);
});
});実行:
npx jest math.test.tsよくある誤解とその対処
describe is not defined
Nodeで実行すれば動くと思っていた
Jestで実行する必要がある
VSCodeで補完されない
Jestが使えないと思った
tsconfig.jsonに "types": ["jest"] を追加する
CIで describe が undefined
jest 依存を入れてない
devDependenciesに jest を入れる
Jest vs Mocha の違いと注意点
Jest
describe が使える?: ✅
実行方法: npx jest
フル機能
Mocha
describe が使える?: ✅
実行方法: npx mocha
アサーションは別途用意
Node.js 単体
describe が使える?: ❌
実行方法: -
describe は使えない
最小構成で動くサンプル(TypeScript)
パッケージ
npm init -y
npm install --save-dev jest ts-jest typescript @types/jest
npx ts-jest config:initファイル構成
├── jest.config.js
├── tsconfig.json
└── src/
└── sum.test.tssum.test.ts
describe('sum function', () => {
it('adds 1 + 2 to equal 3', () => {
expect(1 + 2).toBe(3);
});
});実行
npx jestまとめ
実行方法
node ではなく jest で実行する
Jest導入
npm install --save-dev jest
ファイル名
.test.js or .spec.ts にする
TypeScript補完
@types/jest + tsconfig.json に "types"
Babel or ts-jest設定
必要に応じて設定
それでも直らないときは?
以下を添えて質問すれば迅速にサポート可能です:
実行コマンド
jest.config.js の内容
該当テストファイルのコード
TypeScript or JavaScript のどちらか
