blog.bouzuya.net

2014-04-09 express-resource-mongooseをつくった

bouzuya/express-resource-mongooseをつくった。内容はつくったというよりためしただけど。

express-resouce-mongooseはexpress-resourceとmongooseとを使ったプログラムをテストありで書こうとしている。bwilike.meにAPIを追加するにあたっての検証である。

express-resourceは以前も紹介したし、bouzuya/express-resource-exampleなんてのも書いたけれど、expressでRuby on Railsのresourceのようなルーティングを定義するためのモジュール。

mongooseは紹介していないけれど、Node.jsでのMongoDBの定番ODMらしい。個人的には好きじゃないので、本当に定番なのか疑っている。MongoDBの操作自体は以前も紹介したし、bouzuya/node-mongodb-exampleなんてのも書いた。

どちらの例も中途半端なので、もうすこし実践的にするため、組み合わせて書き、テストをつけようといったところ。

ちなみにテストにはmocha/chai/sinonを使い、sinonとchaiの連携にsinon-chaiを使っている。mochaやchaiやsinonやsinon-chaiについても以前書いた。mochaのhelperを使っていたり、その中ではmocha-sinonを取り込んでいたりする。

ここまで見て分かるように、いままでに書いたことの組み合わせになっている。ぼく自身があちらこちらに例が散ることで分かりづらくなるのでまとめたがっているのが分かるはず。

テストの内容なのだけれど、実を言うとまだあまり書けていない。どこをどうテストするのが良いのか、そのためにはどのようなつくりにすべきかを考えながらつくっている。ひとまずroutesのテストだけ書いてある。

routesでは、リクエストしたときに期待したとおりにcontrollerの関数に引数が適用されるかテストしている。

controllerでは、controllerの関数に引数を適用したときに、期待したとおりにmodelの関数に引数が適用されるかをテストする予定。

modelでは、modelの関数に引数を適用したときに、期待したとおりの変更が加えられるかをテストする予定。

全体を統合するテストについてはこのサンプルでは扱えないかなあと。まだもうすこし時間がかかりそうだなあ。