Jestを用いてユニットテストを行った話


こんにちは!クラウドソリューション開発部の北島です。

春先に携わっていたプロジェクトにて、JavaScriptで書いたWebサイトの一部をJestを使って単体テストを行いました。今回は、そんな経験からJestのセットアップからテストコードの実行、そして実際に使用した感想についてお話ししたいと思います!

Jestとは

Jestとは、JavaScriptのテストフレームワークの一つです。複雑な設定を行うことなく、テストコードを書けば、誰でもテストを行えることが魅力です。
今回のプロジェクトで作成したWebサイトについて、コードの品質担保や、保守性を向上させるため、関数単位でテストを行えるJestを使用することにしました。
関数単位でテストコードを作ることで、早期にバグの検出、修正を行うことが可能で、条件分岐等のロジックも網羅的に確認することができるメリットがあります。

今回やりたいこと

今回は、渡されたテストの点数を適切な成績評価グループに分類し、成績評価グループを返す関数”getScoreGroup”のテストを行います。成績評価グループの定義と、関数は以下の通りになります。

各成績評価グループに分類する際に用いる境界値が、正常なのかをJestを用いてテストしたいです。
無事、境界値通りに分類できることが確認できれば成功です!!

準備

環境構築

1.Node.jsがインストールされていること
2.npm または yarnが使用可能であること

まずは、適当な場所に”score-group-test”ディレクトリを作成し、作成したディレクトリに移動します

該当ディレクトリ内(score-group-test)で、プロジェクトを初期化してからJestをインストールします。

次にpackage.jsonのscriptセクションにテストコマンドを追加します。

ソースコードの作成

テスト対象ファイル”Score.js”をプロジェクトのルートに作成します。

境界値テストを行うためのテストファイルを作成します。

ここまで作業を行い、ディレクトリ構成も下記であれば準備完了です!

テストコードの実行

さあ!あとは下記のコマンドを実行してテストを行うだけです!!

以下のような実行結果が出力されれば境界値テスト成功です!

 

使用してみた感想

実際にJestを使って関数単位のテストコードを書いてみて、改めて「どのような入力に対して、どのような出力が期待されるか」を明確に考える力が求められることを実感しました。特に、境界値のような見落としやすい条件についても丁寧にテストを書くことで、ロジックの漏れや不具合の早期発見につながるという実感がありました。

また、シンプルな関数でもテストケースを丁寧に作成するには一定の労力がかかるため、「書けば終わり」ではなく「どう保守しやすく書くか」を意識することの大切さを学びました。テストを書くことで安心感が得られる反面、テストコード自体の質もまたソースコード同様に重要であるという意識を今後も持ち続けたいと思います。

さらに春先でのプロジェクトでは、GitHub Copilotも積極的に活用しました。関数の仕様やテストパターンをある程度書き始めると、Copilotが補完候補として次に書くべきテストケースを提案してくれるため、テスト観点の抜け漏れに気づけたり、効率よくコーディングを進められる場面が多々ありました。

AIツールは補助的な立場ではありますが、人の判断と組み合わせることで開発効率・品質の両方を底上げできるという点で、併せて利活用できるようになればと感じました。

エコモットでは、私たちと一緒にモノづくりをしていく仲間を募集しています。
弊社に少しでも興味のある方は、ぜひ下記の採用ページをご覧ください。