2014-09-03 2 views
4

모듈의 함수를 테스트하려고합니다. 이 함수 (function_a로 참조)는 동일한 파일 내에서 다른 함수 (function_b)를 호출합니다. 따라서이 모듈은 다음과 같습니다 :nodejs가 모듈의 함수를 대체합니다.

//the module file 

module.exports.function_a = function(){ 
    //does stuff 
    function_b() 
}; 

module.exports.function_b = function_b = function() { 
    //more stuff 
} 

function_a를 function_b의 특정 결과와 함께 테스트해야합니다.

내 테스트 파일에서 function_b를 무시한 다음 내 테스트 파일에서 function_a를 호출하여 function_a가 function_b 대신이 재정의 함수를 호출하게합니다.

그냥 메모, 내가 노력하고 this 질문처럼, 별도의 모듈에서 재정의 기능에 성공,하지만 난에 관심 것이 아닙니다.

나는 아래의 코드를 시도하고, 지금까지 내가 아는 한, 작동하지 않습니다. 그것은 내가 무슨 일을하는지 보여줍니다 않습니다.

//test file 
that_module = require("that module") 
that_module.function_b = function() { ...override ... } 
that_module.function_a() //now uses the override function 

올바른 방법이 있습니까?

답변

3

모듈의 코드 외부에서 해당 모듈의 exports 개체 만 수정할 수 있습니다. 모듈에 "도달하여"접근 할 수 없으며 모듈 코드 내에서 function_b의 값을 변경할 수 없습니다. 그러나 일 수 있으며 마지막 예에서 exports.function_b의 값을 변경합니다.

function_b 대신 exports.function_b을 호출하도록 function_a을 변경하면 모듈의 외부 변경 사항이 예상대로 발생합니다.

+0

완벽하게 작동했습니다. 엄청 고마워! –

관련 문제