バックボーンと互換性があるようにbackbone-mongodbを書き直しました。元のソリューションにはテストの誓いがあり、コードもテストしてもらいたいのですが、どうすればよいかわかりません。
これが例です、私はテストしたいと思います:
update: function(callback) {
var model = this.model;
this._withCollection(function(err, collection) {
if (err) callback(err);
else {
var attributes = _.clone(model.attributes);
delete attributes['_id'];
collection.update({ _id: new ObjectID(model.id) }, {$set: attributes}, {safe:true, upsert:false}, function(err) {
model.fetch();
callback(null, model.toJSON());
});
}
});
},
このコードには特別なことは何もありません。node-mongodb-nativeドライバーを使用し、データベースのレコードを更新します。AFAIK、適切なテストとは、少なくとも(1)collection.update
指定された引数で呼び出されたこと、(2)callback
いつ、どのように呼び出されるべきか、(3)モデルに新しいデータが含まれていることを確認することを意味します。
誓いを立てれば(2)をチェックできますが、(1)をチェックする方法がまったくわかりません。実際、私が知っているすべてのユニットテストフレームワーク、qUnit、Jasmineにも同じことが当てはまります。どういうわけかこれはできると思いますし、そのうちの少なくとも1つを学ぶことにしましたが、最初に行き詰まったときに選択するのは難しいです。:)
私はsinon.jsについて知っており、コレクションもモックされるまで、持っているすべてのオブジェクトをモックすることですべてをテストできると思いますが、これは非常に不器用なようです。誰かが上記のテストを書くのを手伝ってくれませんか、そして私はそれのチュートリアルを書いて喜んでいますか?