Expressを使用してnode.jsでアプリを作成しています。
エクスプレスからルート定義を分離したので、エクスプレスをモックアウトせずに単体テストできます。
私がしたことは次のとおりです。
ファイル: usersRoutes.js
var routes = {
getAll: function(req,res) {
var db = req.db; // req.db is initialized through a dedicated middleware function
var usersCollection = db.get('users');
usersCollection.find({},{limit:10},function(e,results){
res.send(results);
});
}
};
module.exports = routes;
ファイル: users.js
var express = require('express');
var router = express.Router();
var routes = require('./usersRoutes');
/* GET users listing. */
router.get('/', routes.getAll);
module.exports = router;
そして最後にapp.jsで:
var users = require('./routes/users/users.js');
app.use('/users', users);
ここで、req.send が正しいパラメーターで呼び出されていることを確認する単体テストを作成したいと思います。req.send が非同期で呼び出されるため、正しい方法がわかりません。
この関数を単体テストする正しい方法は何ですか?