Я просто переписал 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.Я уверен, что это можно как-то сделать, и я решил изучить хотя бы один из них, но трудно сделать выбор, когда вы застряли в начале.:)
Я знаю о sinon.js и думаю, что каждый может быть проверен с использованием насмешек над всеми имеющимися у меня объектами, пока я не получу насмешку над коллекцией, но это кажется очень неуклюжим.Может ли кто-нибудь помочь мне в написании описанных выше тестов, и я с радостью напишу учебник по этому вопросу?