2012-09-10 3 views
2

나는이 파일의 맨 위에 이미 익스프레스가 포함되어있을 때 테스트 할 때 아래 코드를 얻으려고합니다. 이미 적재 된 원숭이가 특급 개체를 패치하는 방법을 알려주시겠습니까?재스민과 함께 주문한 후 익스프레스를 작성하는 방법은 무엇입니까?

var express = require('express') 

Helper = (function() {                   

    var HelperObject = function(params) { 
    this.directories = params.directories; 
    }; 

    HelperObject.prototype.addStaticPath = function(app) { 
    for(i = 0; i < this.directories.length; i++) {            
     var static = express.static('/public'); 
     app.use(static); 
    } 
    }; 

    return HelperObject; 
})(); 
+0

지금은 표현하고 응용 프로그램이 그래서에서의 상호 작용을 테스트 할 수 있습니다 모두 전달하기로 결정했습니다 참된 고립. 즉, 나는 여전히 누군가가 위에서 설명한 것을 수행했는지 알고 싶습니다. –

답변

2

문제는 당신이 노드 모듈을 만들 때 필요한 MODUL가 모듈의 폐쇄에 바인딩하고 테스트에 보이지 않는 원인이 당신이 그것을 감시 시작할 수 있다는 것입니다.

요구 사항을 무시할 수있는 Gently이 있지만 상용구 테스트 관련 코드로 코드를 뿌릴 것입니다. 워드 프로세서

:

은 새가 gently.hijacked에 모든 필요한 모듈에 대한 참조를 잡는다 기능을 필요로 돌려줍니다.

이 기능을 사용하려면 'my-module.js'에 다음과 같은 행을 추가하십시오.

if (global.GENTLY) require = GENTLY.hijack(require); 

var sys = require('sys'); 
exports.hello = function() { 
    sys.log('world'); 
}; 
이제

위의 모듈에 대한 테스트를 작성 할 수 있습니다에 대한

var gently = global.GENTLY = new (require('gently')) 
    , myModule = require('./my-module'); 

gently.expect(gently.hijacked.sys, 'log', function(str) { 
    assert.equal(str, 'world'); 
}); 

myModule.hello(); 
+0

재미있는 - 깊은 답장을위한 감사합니다! –