mochaは単体テストツールです。 Javaで言うならば、jUnitのようなものです。
テストを成功させる
mochaをインストールして動かしてみます。
$ npm install mocha
$ mkdir test
$ vim test/test.js
test/test.jsを以下のように編集します。
var assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1,2,3].indexOf(4));
});
});
});
これは、mochaを使って実行できるテストケースです。
ArrayクラスのindexOfメソッドは、値が存在しない場合は-1を返すべき。という仕様をテストします。 そのために、[1, 2, 3]の配列のindexOf()に4を渡しています。 配列に4という値は存在しないので、期待値は-1となり、それを実測値と比較しています。
この状態で、mochaを起動すると、以下のように出力されます。
Array
#indexOf()
✓ should return -1 when the value is not present
1 passing (9ms)
テストが成功していることがわかります。
テストを失敗させる
ソースを以下のように変更して、テストを失敗させたらどうなるでしょうか。
const assert = require('assert');
describe('Array', function() {
describe('#indexOf()', function() {
it('should return -1 when the value is not present', function() {
assert.equal(-1, [1, 2, 3].indexOf(1));
});
});
});
[1, 2, 3]のindexOfに1を渡した場合、返り値は0になります。 そのため-1を期待しているこのテストは失敗するはずです。
mochaを起動します。
$ mocha
以下のようにテストが失敗したことと、その詳細な原因が出力されます。
Array
#indexOf()
1) should return -1 when the value is not present
0 passing (10ms)
1 failing
1) Array #indexOf() should return -1 when the value is not present:
AssertionError [ERR_ASSERTION]: -1 == 0
+ expected - actual
--1
+0
at Context.<anonymous> (test/test.js:5:14)
まとめ
テストツールを一度でも使ったことがあるならば、mochaの使い方自体はそれほど難しくないことがわかると思います。 mochaは非同期のテストなどもサポートしているため、今後は、より詳細な使い方を紹介します。
またkarmaやpower-assertとの連携についても記事を書きます。