【发布时间】:2012-10-19 05:55:24
【问题描述】:
我正在尝试在 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 被调用,但我不知道正确的方法是什么这是。
编辑:
用我上面的例子来扩展 Ilya 的回答。
在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
}
【问题讨论】:
-
这能回答你的问题吗? nodejs override a function in a module
标签: javascript node.js stub stubbing nodeunit