環境
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 test
npm 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
│ │ ├──