Pracuję z node.js od miesięcy, ale teraz rozpoczynam nowy projekt i chciałbym się dowiedzieć, jak zorganizować aplikację.Struktura testowania jednostkowego na węźle node.js z mangustą
Mój problem pojawia się, gdy mówimy o testowaniu jednostkowym. Będę używał nodeunit do pisania testów jednostkowych.
Używam również express do definiowania moich tras REST.
Zastanawiam się nad napisaniem kodu dostępu do baz danych w dwóch "osobnych" plikach (będą one oczywiście bardziej oczywiste, ale próbuję uprościć kod). Będzie kod trasy.
var mongoose = require('mongoose')
, itemsService = require('./../../lib/services/items-service');
// GET '/items'
exports.list = function(req, res) {
itemsService.findAll({
start: req.query.start,
size: req.query.size,
cb: function(offers) {
res.json(offers);
}
});
};
I, jak używam, usługa elementów używana tylko do dostępu do warstwy danych. Robię to, aby przetestować tylko warstwę dostępu do danych w testach jednostkowych. To będzie coś takiego:
var mongoose = require('mongoose')
, Item = require('./../mongoose-models').Item;
exports.findAll = function(options) {
var query = Offer
.find({});
if (options.start && options.size) {
query
.limit(size)
.skip(start)
}
query.exec(function(err, offers) {
if (!err) {
options.cb(offers);
}
})
};
W ten sposób mogę sprawdzić za pomocą testów jednostkowych, czy działa poprawnie i mogę używać tego kodu wszędzie tam, gdzie chcę. Jedyne, czego nie jestem pewien, czy zostało to zrobione poprawnie, to sposób, w jaki przekazuję funkcję zwrotną, aby użyć zwróconej wartości.
Co myślisz?
Dzięki!
będziesz chciał połączyć się z mongo z mongodb: /// –
binarygiant
Zaktualizowano przykład. – rounce