2014-09-08 3 views
0

테스트중인 모듈을 제외하고 모든 종속성을 모의로 대체하는 맵을 포함하는 각 테스트에 대한 특정 컨텍스트를 작성하여 Marionette 애플리케이션에 재스민 테스트를 추가하려고합니다. : http://bocoup.com/weblog/effective-unit-testing-with-amd/).어떻게 재귀 적으로 RequireJS 컨텍스트를 설정합니까?

mockRequire = requirejs.config({ 
    map: { 
     '*': { 
       'dep1': '../mocks/dep1' 
      } 
    } 
}); 
mockRequire(['appTest'], function(){...}) 

은 문맥을 필요로하는 중첩 된 통화가 있습니다 appTest 내 모듈은 손실 그러나 이후 :

//appTest.js 
define([], 
    function() { 
     ... 
     require(['dep1'], function (dep1) { 
      //Here is not the mocked dep1 but the real one. 
     }) 
    } 
); 

그래서 문제는 모든 아이가 필요로하는 호출을 위해 내가 같은 컨텍스트를 사용하는 requirejs을 알 수있는 방법입니다/정의하거나이 문제를 해결할 다른 방법이 있는지 확인하십시오. 이 require을 요구하도록

답변

1
은 모듈 정의를 변경

: 그것없이

define(['require'], function (require) { 

, 전역 require를 사용합니다. 이를 사용하여 적절한 컨텍스트가있는 require을 사용합니다. the documentation :

"require"는 모듈에 대한 종속성으로 지정됩니다. 이를 통해 함수 콜백에 전달 된 require() 함수를 사용하여 올바른 컨텍스트를 사용하여 다중 버전 지원을 위해 모듈을 올바르게로드 할 수 있습니다. "require"가 종속성으로 지정되지 않은 경우 오류가 발생할 수 있습니다.

관련 문제