Node.js アプリで nodeunit を使用して関数をスタブしようとしています。これが私がやろうとしていることの簡略化されたバージョンです:
でlib/file.js
:
var request = require('request');
var myFunc = function(input, callback){
request(input, function(err, body){
callback(body);
});
};
でtest/test.file.js
:
var file = require('../lib/file');
exports['test myFunc'] = function (test) {
request = function(options, callback){
callback('testbody');
};
file.myFunc('something', function(err, body){
test.equal(body, 'testbody');
test.done();
});
};
request
テストを実行しようとすると、実際の非スタブが呼び出されるため、適切にオーバーライドしていないようですがrequest
、それを行う正しい方法がわかりません。
編集:
上記の私の例で、以下のイリヤの答えを拡張します。
でlib/file/js
:
module.exports = function(requestParam){
return {
myFunc: function(input, callback){
requestParam(input, function(err, body){
callback(body);
});
}
}
}
次にtest/test.file.js
:
var fakeRequestFunc = function(input, callback){
// fake request function
}
var file = require('../lib/file')(fakeRequestFunc)(
//test stuff
}