いくつかの単体テストを実行するために、エクスプレス レスポンス オブジェクトをモックしようとしています。これまでのところ、モックされた応答オブジェクトは次のようになります。
module.exports.responseHelper = {
response: "",
send : function(val){
this.response = val;
}
}
私の問題は、このオブジェクトを次のようなメソッドに渡す場合です。
var async = require('async');
exports.sample = function (req, res) {
async.waterfall([
function(callback){
callback(null, res);
},
function(res, callback){
callback(null, res);
},
function(res, callback){
callback(null, res);
}
], function (err, res) {
console.log("res before: " + res.response);
res.send("something4");
console.log("res after: " + res.response);
});
};
次のように呼び出します。
var route = require("../routes/testing");
var response = require("./requestHelper").responseHelper;
var req = {
params: {
someID: 1
}
}
route.sample(req, response);
console.log("final res: " + response.response);
response.response 値は常に "" (空の文字列) です。
理想的には、ルートの実装を変更したくありませんが、ウォーターフォールの最後に送信するために渡された値を取得できるようにしたいと考えています。