何ヶ月も node.js を使って開発してきましたが、今は新しいプロジェクトを始めており、アプリを構築する方法を知りたいです。
私の問題は、単体テストについて話すときに発生します。nodeunit を使用して単体テストを記述します。
また、エクスプレスを使用して REST ルートを定義しています。
データベースにアクセスするコードを2つの「別々の」ファイルに書くことを考えていました(明らかにもっと多くなりますが、コードを単純化しようとしています)。ルートコードがあります。
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);
}
});
};
そして、私がそこで使用しているように、データ層にアクセスするためだけに使用されるアイテム サービスです。単体テストでデータアクセスレイヤーのみをテストするためにこれを行っています。次のようになります。
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);
}
})
};
このようにして、正しく機能するかどうかを単体テストで確認でき、このコードをどこでも使用できます。正しく行われたかどうかわからない唯一のことは、戻り値を使用するためにコールバック関数を渡す方法です。
どう思いますか?
ありがとう!