고군분투를 설치 자스민과 RequireJS.모듈의 상대적인 경로 정의에서 휴식을 호출할 때부터 테스트 framework.

StackOverflow https://stackoverflow.com//questions/12664593

문제

내가 있는 프로젝트가 최근에 도입 RequireJS.전 RequireJS,했던 시험 프로젝트와 함께 저녁 식사가 가능합니다.내가 지금 시도해 업데이트 재스민의 SpecRunner 을 처리할 수 있도록 RequireJS.

내가 발견 이 문서에서 단위 테스트 RequireJS 및 재스민 내가 사용하고 있습니다.나는 것에 장애가 함께 어떻게 나는 선적 모듈이 있습니다.각 모듈을 정의하는 다른 모듈이 그것에 의존하고 있지만,각 모듈의 부하를 경로 목록을 만들려는 위치의 상대경로로디 requireJS 었로드됩니다.

나는 로드 requireJS 에서 두 개의 서로 다른 지역:background.html 고 SpecRunner.html.배경은 주요 응용 프로그램 및 SpecRunner 합니다.문제는 나의 모듈을 로드하는 데 실패했을 때부터 SpecRunner 기 때문에 그들의 상대적인 경로를 변경합니다.

예제:

이 계층구조 폴더와 파일을 나는 두 가지 시나리오.하나는 코드는 실행이 제대로 하나에서는 문제가 있:

좋은 시나리오

  • background.html 드 require.js 하고 실행하는 타겟팅 player.js 으로 로드점입니다.
  • player.js 정의 playlists.js 으로 의미할 수 있습니다.
  • playlists.js 이 로드됩니다.
  • player.js 이 로드됩니다.

나쁜 시나리오

  • SpecRunner.html 드 require.js 하고 실행하는 타겟팅 player.js 으로 로드점입니다.
  • player.js 정의 playlists.js 으로 의미할 수 있습니다.
  • playlists.js 가 로드되지 않습니다.을 얻 file://tests/playlists.js
    • 이 파일의 위치가 잘못되었습니다.playlists.js 지/테스트,그것은 아래 js/니다.

나는 확실하지 않는 방법은?그것은 것 같다 매우 명시적으로 경로 이름은 내 유일한 방법이지만,반대되는 모든 requireJS 예입니다.

도움이 되었습니까?

해결책

경로에서 요구를 기준으로 데이터-주요 위치의 위치에 상대적인 함수 호출 require().에서 당신의 좋은 시나리오 이 js/background/, 에서,그리고 나쁜나이 tests/.블로그에서 당신은 연결되어 그들이 사용하여 필요합니다.경로를 만들이 제대로 작동:

<!--
    Since we are in the "test" directory, not in the standard
    "js" directory, we need to define the path prefix' for the
    RequireJS modules so that the modules can be found from the
    tests running in the Spec directory.
-->
<script type="text/javascript">

    var require = {
        paths: {
            "domReady": "../js/lib/require/domReady",
            "model": "../js/model"
        }
    };

</script>

귀하의 경우에,당신은 설정하는 경로는 다음과 같

'player':    '../js/background/player.js',
'playlists': '../js/background/playlists.js'

고 명시적으로 필요 플레이어와 사양 테스트에서 주로 그들은 하에서 블로그 포스트를 확인해 보세요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top