- 開発技術
Jestでユニットテストをしてみよう
- その他
Jestについて
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
JestはFacebookによって開発されたJavaScriptのテストフレームワークです。 今回は紹介しませんが、外部APIへのリクエストをモックしてテストを実行したり、 コードのテスト状況を視覚的に確認できるカバレッジレポートを生成する機能などがあります。
今回は簡単にJestについてユニットテストを例に紹介したいと思います。
Jestのインストール
はじめにnpmでpackage.jsonを生成します。
1 |
npm init |
続いて、次のコマンドでJestをインストールします。
1 |
npm install --save-dev jest |
続いて、package.jsonに以下を追加します。
1 2 3 4 5 |
{ "scripts": { "test": "jest" } } |
テストの作成
テストコードを作成します。今回は、「math.js」というファイルを作成します。
作成後、テスト対象の関数を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } function multiply(a, b) { return a * b; } function divide(a, b) { if (b === 0) { throw new Error("0で割ることはできません"); } return a / b; } module.exports = { add, subtract, multiply, divide }; |
続いて、テスト実行ファイルを作成します。今回は、「math.test.js」というファイルを作成します。
以下のテストケースの内容を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
const { add, subtract, multiply, divide }= require('./math'); test('1と2を足すと3になる', () => { expect(add(1, 2)).toBe(3); }); test('5から2を引くと3になる', () => { expect(subtract(5, 2)).toBe(3); }); test('2と3を掛けると6になる', () => { expect(multiply(2, 3)).toBe(6); }); test('6を2で割ると3になる', () => { expect(divide(6, 2)).toBe(3); }); test('0で割ろうとするとエラーが発生する', () => { expect(() => divide(6, 0)).toThrow("0で割ることはできません"); }); |
ここまでのファイル構成は以下のようになります。
1 2 3 4 5 |
. ├─ math.js ├─ math.test.js ├─ package-lock.json └─ package.json |
テストの実行
次のコマンドでJestを実行し、テストが正常に通るか確認します。
1 |
npm test |
上記を実行した結果、以下のように表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
> jest PASS ./math.test.js √ 1と2を足すと3になる (2 ms) √ 5から2を引くと3になる √ 2と3を掛けると6になる (1 ms) √ 6を2で割ると3になる √ 0で割ろうとするとエラーが発生する (11 ms) Test Suites: 1 passed, 1 total Tests: 5 passed, 5 total Snapshots: 0 total Time: 4.538 s Ran all test suites. |
上記の結果がPASSと表示されたので、正常に動作したことが確認できます。
また、その他の項目はテスト結果の詳細が表示されています。次のことを示しています。
〇Test Suites
→テストファイルごとの結果
〇Tests
→テストケースごとの結果
〇Snapshots
→スナップショットテストが行われている場合のテスト結果
〇Time
→テストの実行にかかった時間
おわりに
以上がJestの使い方と基本的な機能の紹介です。いかがだったでしょうか?
Jestはテストフレームワークとして使いやすいため、非常に人気があります。ぜひ、開発に取り入れてみてください!
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>