What is Jest?
Jestは、JavaScriptのためのテスティングライブラリです。
Jestを用いたテストの流れ
セットアップ
データベースの初期化やコンテナを表示するDOMの準備といった、テストを行う前に実行する処理を記述する。
beforeAllでは、スコープ内(トップレベルならファイル全体、describe内ならdescribe内)のテストを実行する前に1度だけ実行する処理を記述する。
beforeEachでは、スコープ内の各テストの実行前に毎回実行する処理を記述する。
※細かい実行タイミングは、公式ドキュメントを参照
後始末
データベースやDOMツリーのクリーンアップといった、テストを行った後に実行する処理を記述する。
afterAllでは、スコープ内(トップレベルならファイル全体、describe内ならdescribe内)のテストが全て終了した後に1度だけ実行する処理を記述する。
afterEachでは、スコープ内の各テストを行った後に毎回実行する処理を記述する。
※細かい実行タイミングは、公式ドキュメントを参照
テスト
discribe
複数のテストをひとまとめにするために使用する。
(多分、before・afterのメソッドのスコープを行うために使用する)
test
テストの内容を記述する。
テストの内容は、javascriptの必要な処理を行た後、マッチャーを使用して実行結果を確認する。
Jestの機能
マッチャー
値のテストを行うためのメソッドで、expectationオブジェクトのメソッドとして定義されている。
※ 細かい使い方は、expect API ドキュメント参照
// 真偽値のテスト
expect(null).toBeNull(); // green
expect(true).toBeFalsy; // red
// 数値のテスト
expect(5).toBeGreaterThan(3); // green
expect(5).toEqual(4); // red
// 文字列のテスト
expect('team').not.toMatch(/I/); // greem
expect('Christoph').toMatch(/stop/); // greem
モック関数(自分も完全には理解しきれていない)
以下を行うことで、コード間の繋がりをテストすることができる。
- 関数が持つ実際の実装を除去・上書きする
- 関数の呼び出し(また、呼び出しに渡されたパラメータも含め)をキャプチャする
- new によるコンストラクタ関数のインスタンス化をキャプチャする
※ 細かい使い方は、モック関数 API ドキュメント参照
.mockプロパティ
モック関数呼び出し時のデータや関数の返り値等が記録されている。
Jestオブジェクト
モックの作成を行ったり、Jestの全体的な動作を制御したりできる。
※ 細かい使い方は、Jestオブジェクト API ドキュメント参照