Jasmine Framework チュートリアル: 例を使用した単体テスト
⚡ スマートサマリー
ジャスミンは行動主導型です JavaブラウザやDOMを使用せずにNode.jsのユニットテストを実行するスクリプトテストフレームワーク。describeブロック、it specs、expectマッチャーを使用して、エクスポートされたすべての関数がドキュメントどおりに動作することを検証します。
JasmineJS とは何ですか?
Jasmineはオープンソースで最も人気のある Javaあらゆる種類のテストのためのスクリプトライブラリテストフレームワーク Javaスクリプトアプリケーション。Jasmineは、ビヘイビア駆動開発(BDD)の手順に従い、 Javaスクリプト ステートメントは適切に単体テストされています。
Jasmine フレームワークは何に使用されますか?
テストはあらゆるアプリケーションにとって重要な要素です。Node.jsのユニットテストには、Jasmineと呼ばれるフレームワークが利用できます。2000年代初頭には、テスト用のフレームワークが存在していました。 Javaスクリプト JsUnit というアプリケーション。 Later このフレームワークはアップグレードされ、現在は Jasmine として知られています。
ジャスミンは自動化に役立ちます 単体テストこれは、開発において非常に重要な慣行となっています。ping そして、最新のウェブアプリケーションを導入する。
この Jasmine チュートリアルでは、Jasmine を使用して環境をセットアップする方法と、最初の Node.js アプリケーションに対して Jasmine テストを実行する方法を学習します。
Node.js アプリケーションをテストするための Jasmine
ジャスミンは 行動駆動開発(BDD) テストフレームワーク Javaスクリプト。 ブラウザ、DOM、その他の Javaスクリプトフレームワーク。そのため、Webサイトに適しています。 Node.js プロジェクト、または Javaスクリプトを実行できます。Jasmine の使用を開始するには、まず必要な Jasmine モジュールをダウンロードしてインストールする必要があります。
Jasmine テスト環境をセットアップする方法
このJasmine Node.jsチュートリアルでは、次に環境を初期化し、Jasmineの設定ファイルを確認する必要があります。以下の手順は、環境にJasmineをセットアップする方法を示しています。
ステップ1) NPM モジュールのインストール
次のことを行う必要があり NPM をインストールする Nodeアプリケーション内からJasmineフレームワークを使用するためのjasmineモジュール。jasmine-nodeモジュールをインストールするには、以下のコマンドを実行してください。
npm install jasmine-node
バージョンノート(2026): 上記の歴史的なコマンドはまだ機能しますが、 ジャスミンノード このモジュールはメンテナンスモードであり、Jasmine 1.3 をバンドルしているため、レガシープロジェクトでのみ使用してください。新しい Node.js 作業では、メンテナンスされているバージョンがインストールされます。 ジャスミンCLI 開発依存関係として設定し、npx を介して呼び出します。
npm install --save-dev jasmine npx jasmine init
ジャスミン 6.x は現在のメジャーラインであり、Node.js 20、22、24をサポートしており、Node.js 24は2026年にアクティブLTSリリースとなる予定です。
ステップ2) Jasmine 環境を初期化する
プロジェクトの初期化 – これにより、Jasmine は spec ディレクトリと設定 json を作成します。spec ディレクトリは、すべてのテスト ファイルを保存するために使用されます。これにより、Jasmine はすべてのテストの場所を認識し、それに応じてテストを実行できます。 JSONの このファイルは、Jasmineに関する特定の構成情報を保存するために使用されます。
Jasmine環境を初期化するには、以下のコマンドを実行してください。
jasmine init
ステップ3) 設定ファイルを調べてください。
構成ファイルは、spec/support フォルダーに jasmine.json として保存されます。 このファイルには、Jasmine ランナーに含めるソース ファイルと仕様ファイルが列挙されています。
以下のスクリーンショットは、Jasmineのjasmine.jsonファイルの典型的な例を示しています。
- ここで spec ディレクトリが指定されていることに注意してください。 前述したように、jasmine が実行されると、このディレクトリ内のすべてのテストが検索されます。
- 次に注意すべきことは、spec_files パラメータです。これは、作成されるテスト ファイルに「spec」キーワードを追加する必要があることを示します。
設定に関する注意事項: Jasmine 6.x では同じファイルも受け入れます ヘルパーは、各仕様の前に一度ロードされ、 env random や stopSpecOnExpectationFailure などのオプションを保持するブロック。デフォルトの spec_files glob は **/*[sS]pec.?(m)jsまた、別のファイルを渡すこともできます。 –config または JASMINE_CONFIG_PATH 変数に保存します.
次に、この Jasmine フレームワーク チュートリアルでは、Jasmine を使用して Node.js アプリケーションをテストする方法を学びます。
Jasmine を使用して Node.js アプリケーションをテストする方法
Node.js アプリケーションに対して Jasmine 単体テストを使用するには、一連の手順に従う必要があります。
以下の例では、テスト対象となる2つの数値を加算するモジュールを定義します。次に、テストコードを含む別のコードファイルを定義し、Jasmineを使用して加算関数をテストします。
ステップ1) テストする必要があるコードを定義します。2 つの数値を加算して結果を返す関数を定義します。このコードは、「Add.js」というファイルに記述されます。
以下のスクリーンショットは、完成したAdd.jsモジュールを示しており、その下に同じコードがテキストとして繰り返されています。
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code 説明
- 「exports」キーワードは、このファイルで定義された機能が他のファイルから実際にアクセスできることを保証するために使用されます。
- 次に、「AddNumber」という関数を定義します。 この関数は、a と b の 2 つのパラメーターを取るように定義されています。 この関数はモジュール「exports」に追加され、他のアプリケーションモジュールからアクセスできるパブリック関数として作成されます。
- 最後に、関数がパラメータの追加値を返すようにします。
ステップ2) 次に、Add.js ファイル内の「Add」関数をテストするために使用する Jasmine テスト コードを定義する必要があります。以下のコードを、というファイルに記述する必要があります。 spec.js を追加します。
お願いJasmineがテストファイルを検出できるように、「spec」という単語をテストファイルに追加する必要があります。
以下のスクリーンショットは、同じ仕様ファイルをエディタで開いた状態を示しています。
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code 説明
- このファイルで「AddNumber」関数をテストできるように、最初に Add.js ファイルをインクルードする必要があります。
- 現在、テストモジュールを作成しています。 テスト モジュールの最初の部分では、基本的にテストに名前を付けるメソッドを記述します。 この場合、テストの名前は「加算」です。
- 次のビットは、「it」メソッドを使用したテストの説明です。
- ここで、AddNumber メソッドを呼び出し、パラメータ 5 と 6 の 2 つを渡します。これは Add.js ファイル内の AddNumber メソッドに渡されます。戻り値は value という変数に格納されます。
- 最後のステップは、比較、つまり実際のテストを行うことです。AddNumber 関数によって返される値は 11 であると予想されるため、expect(value).toBe(期待値) メソッドを使用してこれを定義します。
出力
- テストを実行するには、jasmine コマンドを実行する必要があります。
- 以下のスクリーンショットは、jasmineコマンドを実行すると、add-spec.jsというテストファイルが存在することを検出し、そのテストを実行することを示しています。テストにエラーがある場合は、それに応じて表示されます。
Addの例では単一のマッチャーを使用していますが、Jasmineには完全なマッチャーセットが付属しています。以下の表は、あなたが作成するほぼすべてのアサーションを網羅するマッチャーの一覧です。
最もよく使うジャスミンのマッチングツール
マッチャーは、expect() の後に続く比較です。マッチャーの前に .not を連結すると、それを反転できます。例: expect(value).not.toBe(11).
| マッチャー | チェック対象 | 典型的な使用 |
| になる | 厳密な同一性、=== と同じ比較 | expect(value).toBe(11) |
| 等しい | オブジェクトと配列の深い等価性 | expect(user).toEqual({id: 1}) |
| 含む | 配列または文字列内の要素 | expect(files).toContain('add-spec.js') |
| 定義未定 | 値は未定義ではありません | expect(app.AddNumber).toBeDefined() |
| 投げる | ラップされた関数がエラーを発生させる | expect(callAdd).toThrow() |
| 呼ばれたことがある | スパイが少なくとも一度は呼び出された | expect(logger.write).toHaveBeenCalled() |
エラーメッセージを読みやすくするための2つの習慣:toBeはプリミティブ型と同一の参照にのみ使用すること。なぜなら、内容が同じ2つのオブジェクトは決して===にならないからである。toEqualは構造体に使用し、引数が呼び出し自体と同じくらい重要な場合はtoHaveBeenCalledWithを追加すること。
ジャスミンにおけるセットアップ、撤収、そしてスパイ
実際のスイートでは、共有状態と、処理速度の遅いコラボレーターのためのダブルが必要です。Jasmineは、追加パッケージなしでこれら両方を提供します。
- beforeEach と afterEach describe ブロック内のすべての仕様の前後に実行します。describe ブロックは、フィクスチャを再構築するのに最適な場所です。
- すべて前とすべて後 ブロック全体に対して一度だけ実行されるため、接続を開くなどのコストのかかる作業のために確保しておきましょう。
- spyOn(object, 'method') 実際のメソッドを tracking double; .and.returnValue() を追加して、応答内容を制御します。
- jasmine.createSpy('name') アタッチするオブジェクトがないコールバックに対して、スタンドアロンのdouble型オブジェクトを作成します。
- 非同期仕様 非同期として宣言され、待機される場合もあれば、Promiseを返す場合もあり、または、正確に一度だけ呼び出される必要がある完了コールバックを受け入れる場合もある。
スパイは仕様間でリセットされるため、スイートがスタブ化されたメソッドを次のテストに漏洩することはありません。この分離により、失敗した仕様は一連の欠陥ではなく単一の欠陥を指し示すようになり、これは、 単体テスト ファンダメンタルズ。
ジャスミン vs モカ vs ジェスト
Jasmineは、支配的な3つのフレームワークの1つです。 Javaスクリプトのテストを行う場合、選択は通常、どれだけの配線作業を自分で管理したいかという点に尽きます。
| 側面 | ジャスミン | モカ | 冗談 |
| アサーション | 内蔵 | 追加、通常はチャイ | 内蔵 |
| スパイと嘲笑者 | 内蔵 | 追加、通常はシノン | 内蔵 |
| 実行 | シリアル | シリアル | プロセス間で並列処理 |
| スナップショット | いいえ | いいえ | はい |
| 共通の家 | Angular、プレーンなNode.js | 柔軟なNode.jsスタック | Reactと最新のバンドラー |
Pick モカ 独自のアサーションおよびモックスタックを構築したい場合、 冗談 並列実行の場合、構成制御よりもカバレッジとスナップショットが重要になります。Jasmineは、完全な状態で提供される最も軽量なオプションであり、そのため、 自動化テスト スイート。




