Matadorでmochaを使ったテストをやってみます。
Matadorは前回のエントリーでインストールします。
[Node.js] Matador+CoffeeScriptの環境を構築する
テストフレームワークにMochaとshouldをインストールします。
$ npm install -g mocha should $ matador init masamune $ mkdir test
次にテストを書いてみます。モデルからやってみます。
Masamune.test.coffee
app = require('matador').createApp __dirname + '/../'
should = require 'should'
describe 'MasamuneModel', ->
describe '生成', ->
it '政宗モデルを生成できる', (done) ->
MasamuneModel = app.getModel('Masamune', true)
model = new MasamuneModel()
should.exist model
done()
テストを実行してみましょう。
$ mocha
.
✖ 1 of 1 tests failed:
1) MasamuneModel 生成 政宗モデルを生成できる:
Error: Unable to find models/MasamuneModel
at /Users/inouetomoyuki/Dropbox/Projects/node/matador_coffee_sample/node_modules/matador/src/matador.js:78:25
at /Users/inouetomoyuki/Dropbox/Projects/node/matador_coffee_sample/node_modules/matador/src/matador.js:83:36
at HTTPServer.getModel (/Users/inouetomoyuki/Dropbox/Projects/node/matador_coffee_sample/node_modules/matador/src/matador.js:201:12)
at Context.<anonymous> (/Users/inouetomoyuki/Dropbox/Projects/node/matador_coffee_sample/test/MasamuneModel.test.coffee:12:29)
at Test.run (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runnable.js:143:15)
at Runner.runTest (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:272:10)
at /Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:316:12
at next (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:199:14)
at /Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:208:7
at next (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:157:23)
at Array.0 (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:176:5)
at EventEmitter._tickCallback (node.js:192:40)
「MasamuneModelがありません」と怒られますので、作ってみます。Matadorのジェネレーターを使って生成してみます。
$ matador model Masamune generating model Masamune Successfully created ./app/models/MasamuneModel.js $ js2coffee app/models/MasamuneModel.js > app/models/MasamuneModel.coffee $ rm app/models/MasamuneModel.js
もう一回実行してみます。
$ mocha . ✔ 1 tests complete (9ms)
テストが通りました。
もう少しだけテストを書いてみましょう。
app = require('matador').createApp __dirname + '/../'
should = require 'should'
describe 'MasamuneModel', ->
describe '生成', ->
it '政宗モデルを生成できる', (done) ->
MasamuneModel = app.getModel('Masamune', true)
model = new MasamuneModel()
should.exist model
done()
describe '取得', ->
it '伊達家の歴代を取得する', (done) ->
MasamuneModel = app.getModel('Masamune', true)
model = new MasamuneModel()
model.findAll (err, dateList) ->
dateList.length.should.eql 1
dateList.should.eql ['伊達政宗']
done()
実行してみます。
$ mocha
..
✖ 1 of 2 tests failed:
1) MasamuneModel 取得 伊達家の歴代を取得する:
TypeError: Object #<fn> has no method 'findAll'
at Context.<anonymous> (/Users/inouetomoyuki/Dropbox/Projects/node/matador_coffee_sample/test/MasamuneModel.test.coffee:23:22)
at Test.run (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runnable.js:143:15)
at Runner.runTest (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:272:10)
at /Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:316:12
at next (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:199:14)
at /Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:208:7
at next (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:157:23)
at Array.0 (/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/mocha/lib/runner.js:176:5)
at EventEmitter._tickCallback (node.js:192:40)
findAllメソッドがないと怒られます。プロダクトコードを修正します。
app/models/MasamuneModel.coffee
module.exports = (app, config) ->
app.getModel("Application", true).extend().methods({
findAll:(callback) ->
callback(null, ['伊達政宗'])
})
テストを実行してみます。
$ mocha .. ✔ 2 tests complete (7ms)
無事通りました。
こんな感じでやっていけば、何とかなりそうです。テストコード内の1行目「app」の取得方法がかっこ悪いですが。
0 件のコメント:
コメントを投稿