MochaとJestの導入 | テストフレームワーク | JavaScript 超完全入門 基本から発展までのすべて

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

MochaとJestとは?

JavaScriptでプログラムの動作を自動的に確認するためのテストフレームワークとして、MochaJestがよく利用されています。

これらを使うことで、コードが期待どおりに動作するかを自動で確認できるため、不具合の早期発見や保守性の向上につながります。

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.jsonscriptsへ次の設定を追加します。


{
  "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が採用されることが多い。
  • プロジェクトの規模や目的に応じて適切なフレームワークを選択しよう。