Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

node.jsのテストフレームワーク「mocha」を今更試してみた

node.jsのテストフレームワーク「mocha」を今更試してみました。

導入

$ npm install -g mocha

実際のところ

ディレクトリ構造はこんな感じ。

$ tree -L 2
.
├── app
│   └── configtest.js
├── config
│   └── default.json
├── node_modules
│   ├── config
└── test
    └── test.js

テスト対象は、app/configtest.jsとします。
前のコードをテストように若干修正。

var config = require('config')
var userName = config.name;
var userPass = config.password;

exports.loginInfo = loginInfo;
function loginInfo(name, pass) {
  return 'postgres://' + name + ':' + pass + '@localhost/SAMPLEDB';
}

ここで、exportsなるものが追加されているのが確認できます。
これがないと、mochaはちゃんとメソッド認識してくれません。
どこぞの間抜けのように時間を潰さないよう注意してください。

次に、テストコードtest/test.js

var assert = require("assert");

describe('PostgresConfig', function(){
  describe('#loginInfo', function(){
    it('should return postgres://hoge:fuga@localhost/TESTDB', function(){
      assert.equal('postgres://hoge:fuga@localhost/SAMPLEDB', func.loginInfo('hoge','fuga'));
    })
  })
})

この状態で、

$ mocha

とやってあげれば

$ mocha


  PostgresConfig
    #loginInfo
      ✓ should return postgres://hoge:fuga@localhost/TESTDB


  1 passing (7ms)

と、テストが通ります。
あとはRSpecやら何やらと同じくテストを書いて赤をだして……とやっていけばいいわけですね。

アサーションを選べる??

このmochaとかいう子はアサーション……つまりassertだのshouldだのを選ぶ機構があるようです。
デフォルトでは今回使用したassertですが、別途導入すれば他のも使えます。
公式情報では

  • should.js BDD style shown throughout these docs
  • expect.js expect() style assertions
  • chai expect(), assert() and should style assertions
  • better-assert c-style self-documenting assert()

というのが公開されているようです、