Javascript

Jest 入門ガイド – 特徴・インストール・テスト実装と CI 連携

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

1️⃣ Jestとは何か – 特徴とメリット

Jest は Facebook(現 Meta) が開発した、JavaScript 向けのオールインワンテストフレームワークです。設定がほぼ不要な「ゼロコンフィギュレーション」方式を採用しているため、プロジェクトに導入するハードルが非常に低い点が最大の魅力です。

  • 統合されたランナー・アサーション・モック機能
  • 追加のツールやプラグインを別途インストールする必要がありません。
  • スナップショットテスト(React コンポーネントや UI 出力の差分検出)
  • ファイル単位の自動並列実行
  • テストファイルは CPU コア数に応じて自動で分割され、CI 環境では 実行時間が短縮されるケースが報告されています(※具体例は Qiita の記事「Jest入門 – 並列実行の効果」参照)。

まとめ
設定不要で高度な機能が標準装備されているため、フロントエンド・バックエンド問わずすぐにテスト自動化を開始できるのが Jest の大きなメリットです。


2️⃣ 環境構築とインストール

2.1 npm と Yarn のインストール手順

ツール 主な特徴
npm Node.js に同梱されており、追加インストールが不要。
Yarn 高速な依存関係解決と deterministic lockfile(yarn.lock)を提供。

どちらのパッケージマネージャでも、以下の手順で Jest を開発依存として導入できます。

package.json にテストスクリプトを追加すれば、コマンド一つで実行可能です。

2.2 jest.config.js の基本設定

Jest はデフォルトでも多くのケースに対応できますが、プロジェクト固有の要件(例:TypeScript 対応やカバレッジ出力先変更)に合わせて設定ファイルを用意すると管理が楽になります。

設定ファイルをプロジェクトルートに置くだけで、次のようにカバレッジ HTML を生成できます。

ポイント
npm(または Yarn)で Jest をインストールし、最低限の jest.config.js を追加するだけで、すぐにテスト実行とカバレッジ取得が可能です。


3️⃣ 基本的なテストの書き方

3.1 describe, test, expect の使い方

Jest のテストは次の3要素で構成されます。

要素 用途
describe テストケースを論理的にグループ化し、出力結果を階層化。
**test(または it 個々のテストシナリオを定義。
expect アサーション(期待値)の検証。

実行結果は次のように階層的に表示され、どこで失敗したかが一目で分かります。

3.2 アサーションパターンとカスタムマッチャー

Jest が提供する標準マッチャー(toBe, toEqual, toContain 等)に加えて、独自ロジックを持つカスタムマッチャー を作成できます。これによりビジネスルール固有の検証を再利用可能な形で表現できます。

まとめ
describetestexpect の基本構造を押さえた上で、標準マッチャーとカスタムマッチャーを組み合わせることで、シンプルかつ拡張性の高いテストコードが書けます。


4️⃣ 高度なテスト技法 – モックと非同期処理

4.1 jest.fnjest.mock の活用例

手法 対象 主な用途
jest.fn 関数単体 呼び出し回数や引数の検証に便利。
jest.mock モジュール全体 外部 API・DB アクセスなど重い依存を置き換える。

4.1‑1 モジュールモック(jest.mock

4.1‑2 関数スタブ(jest.fn

4.2 非同期コードのテストパターン

パターン 記述例
async/await await を使って自然なフローで検証。
.resolves / .rejects Promise が解決・拒否されることをマッチャーで表現。

まとめ
jest.fnjest.mock によるモックと、async/await.resolves/.rejects を組み合わせれば、外部依存や非同期ロジックを安全かつ簡潔にテストできます。


5️⃣ テスト結果活用と CI への組み込み

5.1 テストカバレッジ取得とレポート閲覧

Jest の --coverage オプションは、ステートメント・ブランチ・関数・行 の網羅率を自動で計測し、HTML レポートとして出力します。

実行例:

レポートはファイルごとに色分けされたカバレッジ率が表示され、未テスト領域を一目で把握できます。

5.2 GitHub Actions での Jest 実行設定

以下は Node.js LTS (v18) 環境でテストとカバレッジ取得を自動化する最小構成です。

5.2‑1 ブランチ保護とカバレッジ基準

GitHub の ブランチ保護 設定で「最低カバレッジ 80%」を必須条件にすれば、プルリクエストがマージされる前に自動チェックが走ります。これにより品質基準がプロジェクト全体に徹底できます。

5.3 代表的なトラブルシューティング

現象 原因例 対処法
テストが skipped と表示される test.only.skip が残っている 該当コードを削除またはコメントアウト
モジュール解決エラー (Cannot find module) Jest のデフォルト解決パスに対象ディレクトリが含まれない moduleDirectoriesmoduleNameMapperjest.config.js に追加
カバレッジが 0% になる Babel/TypeScript がトランスパイルされていない babel-jestts-jest を導入し transform 設定を追記

ポイント
Jest のカバレッジ機能と GitHub Actions の組み合わせで継続的な品質保証が実現します。エラーはまず設定ファイル(jest.config.js)や CI ワークフローを確認することで多くの場合解決できます。


6️⃣ 次のステップ – サンプルリポジトリで実践

6.1 ハンズオン手順

  1. サンプルリポジトリをクローン
    bash
    git clone https://github.com/your-org/jest-sample.git
    cd jest-sample
    npm ci

  2. 自分のロジックを追加

  3. src ディレクトリに実装コード(例:ユーティリティ関数)を書き、同階層の __tests__ にテストファイルを作成。

  4. ローカルでテスト実行
    bash
    npm test

  5. CI へプッシュ

  6. .github/workflows/ci.yml をコミットし、GitHub 上で Actions が走ることを確認。緑のステータスが表示されたら成功です。

6.2 学習を深めるための追加リソース

タイトル メディア URL
Jest公式ドキュメント Webサイト https://jestjs.io/docs/getting-started
「Jestによるテスト入門」 Zenn https://zenn.dev/kaze_wind/articles/be21d60ffbbd40
「Jest入門 – 並列実行の効果」 Qiita https://qiita.com/yourname/items/jest-parallel

結論
この記事で紹介したインストール手順、基本的なテスト構造、モック・非同期処理の書き方、そして CI への組み込みまでを一通り実践すれば、Jest を使ったテスト自動化の全体像が確実に身につきます。まずはサンプルリポジトリで手を動かし、「コードを書いたらすぐにテストを書く」 習慣をチームに根付かせましょう。

スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Javascript