我想在node.js應用程序中用nodeunit存根功能。這裏是什麼,我試圖做一個簡化的版本:覆蓋node.js中其他模塊的功能
在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
}
嗨伊利亞,謝謝你的答案,但我真的不明白第二行的語法,或者如何使用它來從另一個模塊存根功能。什麼是「index = require('/ routes/index')(ab);」在做什麼?我如何在上面的示例中使用它? – Joe
好的,我在@ tim-santeford的幫助下計算出來了。再次感謝伊利亞! – Joe