我只是重写了主干-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,都是一样的。我确信这可以通过某种方式完成,并且我决定至少学习其中一个,但是当你一开始就陷入困境时很难做出选择。:)
我知道 sinon.js 并认为可以使用模拟我拥有的所有对象来测试所有内容,直到我最终也模拟了集合,但这似乎非常笨拙。有人可以帮我写上面的测试吗,我很乐意写一个教程吗?