JavaScript

【Node.js】テストコードの書き方と実行方法【基本型】

どうも、つよぽんです!

今回は、Node.jsで利用できるテストツールを使って「テストコードの書き方」と「テストコードの実行方法」について解説します。

今回利用するテストツールは、前回記事「【Node.JS】テストツールの種類とインストール方法を覚える」でインストールした以下の2つとなります。

  1. Mocha
  2. Power Assert

今回の記事の内容は以下の解説記事でも使っているスライドの内容をさらに詳しく解説したものとなります。

あわせて読みたい
【Node.JS】テストの書き方・実行方法を覚える【基本型】今回は「mocha」と「power-assert」を使ったテストコードの書き方とテストコードの実行方法を学習します。また、「node_modules/.bin」と「package.jsonのscriptsプロパティ」の説明もしています。...

今回の記事は次のような方に向けて書きました。

想定読者
  1. テストコードの書き方を知りたい
  2. テストコードの実行方法を知りたい

この記事を読み終えた後のあなたは次のことがわかるようになっています。

この記事を読み終えた後のあなた
  • テストコードが書けるようになる
  • テストコードを実行できるようになる

それでは以下の内容で話を進めていきます。

今回の内容
  1. テストコードの書き方【mochaとpower-assertを利用】
  2. テストコードの実行方法

テストコードの書き方【mochaとpower-assertを利用】

テストコードを作る前に、テストファイルの格納先ディレクトリを用意する

テストファイルを作るためには、当然、テストファイルをどこに保存するかを考える必要があります。

Mochaのドキュメント(THE TEST/ DIRECTORY)を読むと、以下のようなことが書かれています。

By default, mocha looks for the glob ./test/*.js, so you may want to put your tests in test/ folder.

つまり、テスト実行時は「test」ディレクトリを探すということなので、package.jsonと同じ階層にtestディレクトリを作成しましょう。

以下の画像は、testディレクトリをpackage.jsonと同じ階層に用意した様子をあらわしたものです。(※画像をクリックすると別のタブで画像が開きます。)

テストファイルを格納するための「testディレクトリ」を用意するテストファイルを格納するための「testディレクトリ」を用意する

testディレクトリの中にテストファイルを作成する

先ほどの画像の赤枠内を観ると「math.spec.js」というファイルがあるのがわかるかと思います。

この「math.spec.js」はテストファイルとなります。

テストファイルを作成するときはtestディレクトリ内に保存するようにします。

また、テストファイルの末尾は「.js」であれば良いですが、ファイル名からだけでもテストファイルであることが理解できるようにするために、慣例的に末尾を「.test.js」もしくは「.spec.js」とすることが多いです。(今回のサンプルファイルでは「.spec.js」の方を採用しました。)

テストコードの基本型を覚える

テストコードの基本型を覚えるには、実際にサンプルコードを見るほうが早いかと思うので、まずは以下の画像内のコードを見ていただけたらと思います。(※画像をクリックすると別のタブで画像が開きます。)

テストコードの基本型テストコードの基本型

サンプルコードと一緒に書いてある説明も一緒に読んでいただけたらと思いますが、基本的には次のような形式でテストコードを記述します。

  1. アサーションライブラリを読み込む
    (今回の場合は「Power Assert」がアサーションライブラリとなる)
  2. テストしたい機能を読み込む
  3. Mocha(テストフレームワーク)が提供している「describeメソッド」を使い、各引数には次の値をセットする
    • 第1引数 : どんな内容のテストかわかるようなタイトルをセットする
    • 第2引数 : コールバック関数をセットする
  4. Mochaが提供している「itメソッド」を使い、各引数には次に値をセットする
    • 第1引数 : describeでセットしたタイトルよりも、もっと具体的なテストタイトルをセットする
    • 第2引数 : コールバック関数をセットする
  5. itの第2引数にセットしたコールバック関数の中で、アサーションライブラリのメソッドを使ってテストコードを書く
    • GitHubの「Power Assert > API」を見ると、どんなアサーションメソッドが提供されているか確認できる
    • アサーションライブラリを使うタイミングは、2つの値を比較したいとき

Mochaのドキュメントの「GETTING STARTED」にもテストコードのサンプルコードが書かれているので、そちらも参考にすると良いでしょう。

テストコードの実行方法

「./node_modules/.bin/mocha」でテストを実行する

結論から言うと、「./node_modules/.bin/mocha」を実行するとテストが実行できるようになっています。(testディレクトリ内にテストファイルがあることが前提)

なぜ「./node_modules/.bin/mocha」が実行できるか?

npm install -D mocha」を実行すると「node_modules」ディレクトリにmochaが追加されます。

このとき、ライブラリの中には「コマンド」を提供しているライブラリもあり、「mocha」はコマンドを提供しているライブラリの1つになります。

コマンドを提供しているライブラリをインストールすると「node_modules/.bin」ディレクトリに、ライブラリが提供しているコマンドが追加されます。

以下の画像の左側の赤枠内を見ると「node_modules/.bin/mocha」があることがわかるかと思います。(※画像をクリックすると別のタブで画像が開きます。)

「node_modules/.bin」ディレクトリ内にある「mochaコマンド」が使えることを確認した様子「node_modules/.bin」ディレクトリ内にある「mochaコマンド」が使えることを確認した様子

実際にコマンドが使えるかどうか確認するために「–version」オプションを付けてmochaコマンドを実行した様子が、上の画像の右側の赤枠内を見ると分かるかと思います。

実行結果として「5.2.0」が表示されていることから、mochaコマンドを実行できていることがわかります。

「npm test」でテストを実行する

先ほどは「./node_modules/.bin/mocha」コマンドを実行すると、テストを実行できることを説明しました。

しかし、毎回「./node_modules/.bin/mocha」と打ち込むのは面倒です。

そこで、「package.json」のscriptsに「”test”: “mocha”」を追加することで、「npm test」でmochaコマンドを実行できるようになります。

以下の画像は、package.jsonのscriptsに「”test”: “mocha”」を追加して、「npm test」を実行したようすをあらわしたものです。(※画像をクリックすると別のタブで画像が開きます。)

package.jsonのscriptsに「test: mocha」を追加すると「npm test」でテストが実行できるようになるpackage.jsonのscriptsに「test: mocha」を追加すると「npm test」でテストが実行できるようになる

上の画像の右下の赤枠で「npm test」を実行しており、実行後はmochaコマンドが実行されて、テストが実行されているのがわかります。

このようにpackage.jsonのscriptsに「”test”: “mocha”」を記述すると、テストの実行が楽になります。

まとめ

今回の話をまとめると次のとおりです。

今回のまとめ
  • テストファイルは「test」ディレクトリの中に保存する
  • 「Mocha」が提供している「describeメソッド」「itメソッド」、「Power Assert」が提供しているアサーションメソッドを使ってテストを記述する
  • 「Mocha」をインストールすると「node_modules/.bin」ディレクトリ内に「mochaコマンド」が追加される
  • package.jsonのscriptsに「”test”: “mocha”」を追加すると「npm test」でmochaコマンドを実行できるようになる
  • mochaコマンドを実行することで、テストファイルに書いたテストコードが実行される

今回の内容は以下の記事内のスライドの補足資料として作成しました。スライドの全部を確認したい方は以下の記事も参照して頂けたらと思います。

あわせて読みたい
【Node.JS】テストの書き方・実行方法を覚える【基本型】今回は「mocha」と「power-assert」を使ったテストコードの書き方とテストコードの実行方法を学習します。また、「node_modules/.bin」と「package.jsonのscriptsプロパティ」の説明もしています。...
【3つの特典付き】Webエンジニアに必要な基礎スキルを体系的に効率良く身につけたいですか?

LINE登録で無料特典を受け取る

次のような方向けに、学習をサポートするコンテンツを無料プレゼントしています。

  • Webエンジニアになりたいけど何から学習を始めれば良いかわからない
  • 今まで独学で頑張ってきたけど、独学に限界を感じてきた
  • プログラミングは出来るけど、大きめのコードが書けない

「プレゼント詳細が知りたい」「プレゼントを受け取りたい」といった方は、以下のボタンをクリックして詳細ページをご確認ください。

無料特典を受け取る

 

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です