developers blog

Javascript のテスト環境を作成する (mocha+power-assert)

はじめに

mocha と power-assert を使用し、javascript のテスト環境を作成します。

環境

  • OS : Windows 7 Pro 64bit
  • その他 : node.js 6.9.4, mocha 3.2.0, power-assert 1.4.2

mocha とは

mocha は node.js とブラウザで実行される、シンプルで柔軟な Javascript テストフレームワークです。
ライセンスは MIT です。

mocha

power-assert とは

power-assert は標準的なアサートインターフェースを通して、詳細なアサーションメッセージを提供するためのツールです。

power-assert

テスト環境の作成

Javascript のテストに必要なライブラリをインストールします。

mocha をインストールする

npm を利用して、mocha を開発環境にインストールします。

1npm install --save-dev mocha

pawor-assert をインストールする

続いて powor-assert をインストールします。

1npm install --save-dev power-assert

node.js 上で power-assert を利用するために、intelli-espower-loader もインストールします。

1npm install --save-dev intelli-espower-loader

package.json の編集

package.json の scripts を以下のように編集し、npm test から mocha を実行するように変更します。

package.json
1  "scripts": {
2    "test": "mocha"
3  },

テストの実行

実際に Javascript を書いてテストを実行してみます。

テストファイルの作成

プロジェクト内に test フォルダを作成し、その中に test.js というファイルを作成します。

1root
2  ┣ node_modules
3test
4  ┃   ┗ test.js
5  ┗ package.json

以下のようなテストを書きます。ここでは配列[1,2,3]に4が含まれていないことを確認します。

test.js
1var assert = require('assert');
2
3describe('Array', function() {
4    describe('#indexOf()', function() {
5        it('shoud return -1 when the value is not present', function() {
6            assert.equal(-1, [1,2,3].indexOf(4));
7        });
8    });
9});

テストの実行

npm test コマンドでテストを実行します。成功すると以下のように表示されます。

1  Array
2    #indexOf()
3      √ shoud return -1 when the value is not present
4
5
6  1 passing (8ms)

エラーの場合

test.js の内容をエラーになるように変更します。

test.js
1//  assert.equal(-1, [1,2,3].indexOf(4));
2    assert.equal(-1, [1,2,3].indexOf(3));

この状態で npm test コマンドを実行すると、以下のようにエラーが表示されます。

1  Array
2    #indexOf()
3      1) shoud return -1 when the value is not present
4
5
6  0 passing (11ms)
7  1 failing
8
9  1) Array #indexOf() shoud return -1 when the value is not present:
10
11      AssertionError: -1 == 2
12      + expected - actual
13
14      --1
15      +2
16
17      at Context.<anonymous> (test\test.js:6:20)
18
19
20
21npm ERR! Test failed.  See above for more details.