MochaとJestとは?

JavaScriptでプログラムの動作を自動的に確認するためのテストフレームワークとして、MochaとJestがよく利用されています。
これらを使うことで、コードが期待どおりに動作するかを自動で確認できるため、不具合の早期発見や保守性の向上につながります。
Mochaはカスタマイズ性が高く、さまざまなライブラリと組み合わせて利用できることが特徴です。一方、Jestは必要な機能が最初からそろっており、設定をほとんど行わずにテストを始められます。
MochaとJestの違い
それぞれの特徴を比較すると、次のようになります。
| 項目 | Mocha | Jest |
|---|---|---|
| 開発元 | オープンソースコミュニティ | Meta(旧Facebook) |
| 設定の容易さ | アサーションライブラリや設定を追加することが多い | 多くの機能が標準搭載され、すぐに利用できる |
| 非同期テスト | 対応している | 標準で対応している |
| モック機能 | 外部ライブラリを利用することが多い | 標準で利用できる |
| スナップショットテスト | 標準では非対応 | 標準で利用できる |
| 主な用途 | 自由度の高いテスト環境 | Reactを含む一般的なJavaScript開発 |
現在はJestが選ばれることが多い
現在では、Reactをはじめとする多くのJavaScriptプロジェクトでJestが採用されています。
設定が簡単で、アサーション・モック・カバレッジ計測など必要な機能が最初から用意されているため、初心者でも始めやすい点が大きな魅力です。
一方で、既存のプロジェクトや細かなカスタマイズが必要な環境では、Mochaが利用されることもあります。
Mochaの導入方法
Mochaをプロジェクトへ導入する基本的な流れを紹介します。
ステップ1: Mochaのインストール
まず、次のコマンドでMochaをインストールします。
npm install --save-dev mocha
ステップ2: テストディレクトリの作成
テストファイルを保存するためのtestディレクトリを作成します。
mkdir test
ステップ3: package.jsonへスクリプトを追加
package.jsonのscriptsへ次の設定を追加します。
{
"scripts": {
"test": "mocha"
}
}
ステップ4: テストを実行
次のコマンドでテストを実行します。
npm test
Mochaを使ったユニットテストの例
Mochaでは、テスト内容をdescribe()とit()で記述することが一般的です。
const assert = require("assert");
describe("Array", function () {
describe("#indexOf()", function () {
it("存在しない値なら-1を返す", function () {
assert.strictEqual([1, 2, 3].indexOf(4), -1);
});
});
});
このコードでは、配列のindexOf()が、存在しない値を検索した場合に-1を返すことを確認しています。
なお、MochaではアサーションライブラリとしてChaiを組み合わせて使用するケースも多く見られます。
Jestの導入方法
Jestは、多くの機能が最初から用意されているため、比較的簡単に利用できます。
ステップ1: Jestのインストール
次のコマンドでJestをインストールします。
npm install --save-dev jest
ステップ2: package.jsonへスクリプトを追加
package.jsonへ次の設定を追加します。
{
"scripts": {
"test": "jest"
}
}
ステップ3: テストを実行
次のコマンドでテストを実行します。
npm test
Jestを使ったユニットテストの例
function add(a, b) {
return a + b;
}
test("1 + 2 = 3", () => {
expect(add(1, 2)).toBe(3);
});
この例では、add()関数の戻り値が期待どおりであるかをテストしています。
expect()で実際の値を指定し、toBe()で期待する値と一致するかを確認しています。
MochaとJestの選択基準
どちらも優れたテストフレームワークですが、目的によって向いているものが異なります。
| 状況 | おすすめ |
|---|---|
|
すぐにテストを始めたい。 Reactなど一般的なWeb開発を行う。 設定をできるだけ減らしたい。 |
Jest |
|
自由にライブラリを組み合わせたい。 既存のMocha環境を利用している。 細かなカスタマイズを行いたい。 |
Mocha |
初心者が覚えておきたいポイント
- テストを書くことで、プログラムの変更による不具合を見つけやすくなります。
- Jestは設定が少なく、初心者にも始めやすいフレームワークです。
- Mochaは自由度が高く、必要なライブラリを組み合わせて利用できます。
- ユニットテストでは、小さな機能ごとに動作を確認することが基本です。
- テストは一度書けば、何度でも自動実行できるため品質向上につながります。
まとめ
- MochaとJestはJavaScriptの代表的なテストフレームワークである。
- Jestは多くの機能が標準搭載されており、設定が簡単である。
- Mochaは自由度が高く、さまざまなライブラリと組み合わせられる。
- 現在の新規プロジェクトではJestが採用されることが多い。
- プロジェクトの規模や目的に応じて適切なフレームワークを選択しよう。