Node.js 응용 프로그램에서 nodeunit 함수를 스텁하려고합니다. 나는이 때 때문에, 제대로 request
을 무시하지 것 같은node.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();
});
};
것 같다 :
lib/file.js
에서 :
var request = require('request');
var myFunc = function(input, callback){
request(input, function(err, body){
callback(body);
});
};
test/test.file.js
에서 여기에 내가 할 노력하고있어의 단순화 된 버전입니다 테스트를 실행하려고하면 실제 스텁이 아닌 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
}
안녕 Ilya, 대답 주셔서 감사합니다,하지만 난 정말 두 번째 줄의 구문을 이해하거나 다른 모듈에서 함수를 스텁이 사용하는 방법. "index = require ('/ routes/index') (ab)는 무엇입니까?" 하기? 위의 예에서 어떻게 사용합니까? – Joe
좋아, 나는 팀의 도움으로 그것을 알아 냈다. 고마워, 다시, 일야! – Joe