この記事ではJavaScriptのテストフレームワークである『Jest』について
- Jestとは
- Jestの使い方
- Jestのインストール方法
- JestでJavaScriptのプログラムをテストする方法
などを分かりやすく説明するように心掛けています。ご参考になれば幸いです。
Jestとは
JestはFacebookが開発しているJavaScriptのテストフレームワークです。
JestはNode.js上で実行されるため、高速にテストを実行することが可能です。そのため、複雑なテストでもスムーズにテストを実行することができ、開発効率を高めることができます。
また、Jestにはスナップショット機能やモック機能など多くの便利な機能があります。スナップショット機能により、UIの変更を検出することができ、モック機能により、特定の関数の動作を制御したり、外部依存関係を模擬したりすることが可能です。
これらの特徴から、Jestは現在JavaScriptでは最も人気のあるテストフレームワークとなっています。
Jestの使い方
ではこれから
- Jestのインストール方法
- JestでJavaScriptのプログラムをテストする方法
を順番に説明します。
Jestのインストール方法
Jestのインストールは以下の手順で行います。
Jestのインストールの手順
- 「Node.js」と「Node Package Manager」がインストールされているかを確認する
- 「package.json」ファイルを作成する
- Jestをインストールする
ではこれから上記の手順について順番に説明します。
「Node.js」と「Node Package Manager」がインストールされているかを確認する
Jestをインストールするためには、「Node.js」と「Node Package Manager(Node.js標準のパッケージ管理ツール)」がインストールされている必要があります。
「PowerShell」または「コマンドプロンプト(cmd)」を起動し、以下の2つのコマンドを1つずつ実行します。
node -v
npm -v
これらのコマンドを実行して、バージョンが正しく表示されればOKです。
npmはNode Package Managerを利用するためのコマンドです。
上記のコマンドの実行結果
参考に上記のコマンドの実行結果を下記に示します。
PS C:\Users\user01> node -v
v18.16.0
PS C:\Users\user01> npm -v
9.5.1
あわせて読みたい
「Node.js」と「Node Package Manage」のインストール方法については下記の記事で詳しく説明しています。インストールしていない方は下記のリンクからぜひチェックをしてみてください。 続きを見るNode.jsの『ダウンロード方法』と『インストール方法』を解説!
「package.json」ファイルを作成する
Node.jsがインストールされていることを確認したら、次に「package.json」ファイルを作成します。ここでは、パッケージ管理にnpm(node package manager)を使用して作成します。
カレントディレクトリ(現在作業しているディレクトリ)がプロジェクトのルートディレクトリであることを確認してください。その後、以下のコマンドを実行すると、「package.json」ファイルを作成することができます。
npm init -y
すでに「package.json」ファイルが存在している場合はこのコマンドは不要です。
npm init -y
コマンドを実行すると、以下に示すような「package.json」ファイルが作成されます(環境によって作成されるpackage.jsonは異なります)。
{
"name": "jesttest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
Jestをインストールする
次に、Jestをインストールします。以下のコマンドをプロジェクトのルートディレクトリで実行すると、Jestをインストールすることができます。
npm install --save-dev jest
上記のコマンドを実行すると、Jestが開発依存関係として「package.json」ファイルに追加されます。その結果、「package.json」ファイルは以下のように更新されます。
{
"name": "jesttest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"jest": "^29.5.0"
}
}
devDependencies
にjest
が追加されていることで、Jestが正しくインストールされていることが確認できます。
JestでJavaScriptのプログラムをテストする方法
では、次にJestを用いてJavaScriptのプログラムをテストしてみましょう。
テストする方法の手順を以下に示します。
JestでJavaScriptのプログラムをテストする方法
- Jestでテストを行うファイルを作成する
- テストファイルを作成する
- 「npm test」コマンドでテストを実行できるように「package.json」ファイルを編集する
- 「npm test」コマンドでテストを実行する
ではこれから上記の手順について順番に説明します。
Jestでテストを行うファイルを作成する
「add.js」というファイルを作成し、テスト対象であるJavaScriptの関数を書きます。このファイルでは、単純な足し算を行うadd
関数を記述しています
function add(a, b) {
return a + b;
}
module.exports = add;
テストファイルを作成する
次に、作成したadd
関数のテストコードを書きます。「add.test.js」というファイルを作成し、以下処理を記述します。
// テスト対象ファイルを読み込み
const add = require('./add');
// test関数を使用して単体テストを定義
test('adds 1 + 2 to equal 3', () => {
expect(add(1, 2)).toBe(3);
});
test関数
test関数を使用して単体テストを定義します。
test
関数の第1引数には、テストの説明を記述します。
test
関数の第2引数には、関数を記述します。この関数の中にテストで行う処理と期待される結果を記述します。
なお、今回はtest
関数で単体テストを定義しましたが、test
関数をit
関数に置き換えても同じ動作をします。
expect関数とMatcher
expect関数は、実際にテストを行うための値を提供し、その後に続くMatcher(toBeなど)はその値がどのような状態であることを期待するかを表します。
つまり、expect
とMatcher
を組み合わせて「テストしたい値」と「期待される結果」を記述します。
補足
Jestではテストファイルは 「.test.js」という拡張子を持つか、「tests」という名前のディレクトリに置くのが一般的です。
最終的なディレクトリ構成は以下のようになります(プロジェクトのルートディレクトリの名前がjestTest
の場合)。
jestTest
├─node_modules
├─add.js
├─add.test.js
├─package-lock.json
└─package.json
「npm test」コマンドでテストを実行できるように「package.json」ファイルを編集する
npm test
コマンドでテストを実行できるように、「package.json」ファイルのscript
に「"test": "jest"
」を追加します。
{
"name": "jesttest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"jest": "^29.5.0"
}
}
「npm test」コマンドでテストを実行する
以下のコマンドをプロジェクトのルートディレクトリで実行すると、テストを実行することができます。
npm test
実行結果
PS C:\Users\user01\Desktop\jestTest> npm test
> jesttest@1.0.0 test
> jest
PASS ./add.test.js
√ adds 1 + 2 to equal 3 (2 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.5 s, estimated 1 s
Ran all test suites.
PS C:\Users\user01\Desktop\jestTest>
Jestを用いてテストを実行することができました。
本記事のまとめ
この記事ではJavaScriptのテストフレームワークである『Jest』について、以下の内容を説明しました。
- Jestとは
- Jestの使い方
- Jestのインストール方法
- JestでJavaScriptのプログラムをテストする方法
お読み頂きありがとうございました。