ユーザのサインアップ、ログイン・ログアウトを実装できたので いよいよ本格的に機能を作りこんでいきたいのですが、 やはりテストが無いと不安です。

Mocha

比較的シンプルそうなテストフレームワーク mocah を導入します。

1
$ npm install -g mocha --save-dev

さっそく動かしてみる.

1
2
$ mkdir test
$ touch test/test.js
1
2
3
4
5
6
7
8
9
var assert = require('chai').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(5));
      assert.equal(-1, [1, 2, 3].indexOf(0));
    });
  });
});
1
$ mocha
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Array
  #indexOf()
    1) should return -1 when the value is not present

0 passing (14ms)
1 failing

1) Array #indexOf() should return -1 when the value is not present:
   ReferenceError: assert is not defined
    at Context.<anonymous> (test/test.js:4:7)

お、動いてるっぽい。 ちなみにアサーションには Chai を使っています。

1
var assert = require('chai').assert;

Chai は他にも expectshould を使った書き方もサポートしています。 shouldexpect は Rspec で使っていましたが冗長になりがちだったので、今回は assert を使ってみようと思います。

CI に乗せる

いつもの Travis-CI で。

以下の内容で .travis.yml をリポジトリのルートに作る。

1
2
3
language: node_js
node_js:
  - '5.9.0'

TravisCI は npm test を叩いてテストするので、package.js に以下を加える。

1
2
3
4
5
6
7
{
...
  "scripts": {
    "test": "mocha"
  },
...
}

TravisCI でリポジトリを有効にしてビルド。README.mdにバッジを追記する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
......
$ npm test
> WitchCoder@0.0.0 test /home/travis/build/tac0x2a/WitchCoder
> mocha
  login
    /return
  ✓ should be return error when email is empty
  ✓ should be return error when name is empty
  ✓ login failed if user not found
  ✓ login failed if password is not matched
  4 passing (14ms)
The command "npm test" exited with 0.
Done. Your build exited with 0.

動いてる!いい感じ〜