2011-11-23 2 views
0

Stackoverflow에는이 문제에 대한 많은 토론이 있습니다. 그러나 그에 대한 대답은 나을 수 없습니다. 그리고 나는 coffeescript를 많이 모른다.Coffeescript의 익명 함수 테스트 방법

기본적으로,이 커피 스크립트를

return42 = -> 42

이 내가 컴파일 할 때 나는 그것이이 세계에 노출 아니에요 익명 함수에 싸여이

 

(function() { 
    var return42; 

    return42 = function() { 
    return 42; 
    }; 

}).call(this); 
 

그래서 기능을 얻을. 그래서이 시험을 쓸 때

 

describe "Test number", -> 
    it "is 42", -> 
     expect(return42()).toBe 42 
 

return42()가 정의되지 않았기 때문에 테스트에 실패합니다. 어떻게 해결할 수 있을까요?

대단히 감사합니다. :-)

답변

1

프로그램의 진입 점으로 전역 변수가 필요합니다. 함수에 로컬로 두지 않고 함수를 전역 객체에 연결하여이를 수행 할 수 있습니다. 대신이 시도 :

@return42 = -> 42 

당신을 줄 것이다 :

(function() { 
    this.return42 = function() { 
    return 42; 
    }; 
}).call(this); 

만하지 Node.js를 브라우저에서이를 실행하는 경우, 그것은 좀 더 관용적 window에 연결하는 것을 this 대신에이 둘 모두 글로벌 개체입니다.

0

지미가 맞지만 기능을 노출 할 필요가 없다면 테스트 할 필요가 없다고 덧붙일 것입니다. 대신 해당 함수를 사용하는 공용 API를 테스트하십시오. 공용 API가 개인 구현에 의존하는 한, 개인 함수도 실패하면 테스트가 실패합니다.