環境
MacBook Pro (2.3 GHz 8コアIntel Core i9)
macOS 14.0(23A344)
Homebrew 4.3.8
gh 2.52.0
目次
プロジェクトを作成する
- プロジェクト(ディレクトリ)を作成する
mkdir jest-tutorial - ディレクトリに移動する
cd jest-tutorial -
プロジェクトルート※1にpackage.jsonを作成する
touch package.json - package.jsonに下記を記載する
package.json
{ "name": "jest-tutorial", "license": "UNLICENSED" } - package.jsonに下記を記載する
package.json
"scripts": { "test": "jest" }
※1
プロジェクトルートは、すべてのプロジェクトソースの親であるフォルダーです。
TypeScriptのインストール
-
TypeScriptコンパイラをインストールする※2
npm install typescript※2npm install -g typescript※2
-gオプションを付けると、グローバルでインストールされる。各PJでバージョンを分けたい場合は-gオプションを付けずにインストールを行う -
tscコマンドが実行できるか確認する※3npx tsc -v //出力結果 Version 5.5.4※3tsc -v //出力結果 Version 5.5.4※3
グローバルでインストールしてる場合は、
npxコマンドを最初につける必要ながない
パッケージ(Jest関連)のインストール
- Jest本体をインストールする。
jestはJest本体:JavaScriptだけのプロジェクトであれば、このパッケージを入れるだけでテストが始められます。
npm install -D jest - 必要なパッケージをインストールする。※4
ts-jestはJestをTypeScriptに対応させるためのパッケージ:ts-jestを入れると、TypeScriptで書いたテストコードを、コンパイルの手間なしにそのまま実行できるようになります。
npm install -D ts-jest npm install -D @types/jest
@types/jestはJestのAPIの型定義ファイル:TypeScriptの型情報を付与されるので、テストコードの型チェックが行えるようになります。
※4
下記のように非推奨のinflight globパッケージがインストールされている警告が出るが、無視できる。

必要であれば、下記でパッケージの依存関係を調べることができる。
npm ls inflight
Jestの設定ファイルを作成する
- Jestの設定ファイル(jest.config.js)を作成する
npx ts-jest config:init - Jestの設定ファイル(jest.config.js)に下記を記載する
jest.config.js
module.exports = { preset: 'ts-jest', testEnviroment: 'node' }
Jestが動くかを確認する
- 動作確認用テストファイル(check.test.ts)を作成する
touch check.test.ts - 動作確認用テストファイル(check.test.ts)に下記を記載する
check.test.ts
test("check", () => { console.log("OK"); }); - package.jsonに下記を記載する(すでに上で記載済みの場合は不要)
package.json
"scripts": { "test": "jest" } -
jestコマンドでテスト実行するornpm run testnpm test - 下記の結果となれば問題なく
check.test.tsファイルが実行されたことが確認できる
テストを実施する
-
テストファイル(isZero.ts)を作成する
touch isZero.ts -
テストファイル(isZero.ts)に下記を記載する
isZero.tsfunction isZero(value: number): boolean { return value === 0; } -
componentとして使用できるよう、関数をエクスポートするisZero.tsexport function isZero(value: number): boolean { return value === 0; } -
isZero.tsのテストが実行できるように、テストコードを作成するtouch isZero.test.ts -
テストコードで
isZero.tsのテストが実行できるように、関数をインポートするjs.isZero.test.tsimport { isZero } from "./isZero"; -
isZero関数に0を渡したらtrueが返るかをチェックするテストコードを書くjs.isZero.test.tsimport { isZero } from "./isZero"; test("0を渡したらtrueになること", () => { const result = isZero(0); expect(result).toBe(true); }); -
jestコマンドでテスト実行するnpm run test -
テストケースを追加する
js.isZero.test.tsimport { isZero } from "./isZero"; test("0を渡したらtrueになること", () => { const result = isZero(0); expect(result).toBe(true); }); test("1を渡したらfalseになること", () => { const result = isZero(1); expect(result).toBe(false); }); -
jestコマンドでテスト実行するnpm run test
ディレクトリ構成
drive/ ←ルートディレクトリ
├── Applications/
├── Syetem/
└── Usr/ ←usr/(隠しファイル)とは異なるファイル
│ ├── shared/
│ └── personnel(ex. Jochun)/ ←ホームディレクトリ
│ ├── jest-tutorial/
│ │ ├── node_modules/ ←TypeScriptのコンパイラ
│ │ ├── package.json
│ │ ├── check.test.ts ←Jestが動くかを確認する
│ │ ├── isZero.ts ←
│ │ └── isZero.test.ts ←
│ ├── MyVagrant/
│ ├── Desktop/
│ ├── Downloads/
│ ├── Documents/
│ ├── .config/
│ ├── .ssh/
│ ├── .zshrc/
│ └── .local/
│ │ ├── .bin
│ │ ├──