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()
というのが公開されているようです、