2013-08-20 3 views
3

가 나는 도장 응용 프로그램이intern을 실행하여 node.js로 실행되는 도우 응용 프로그램을 테스트하는 방법은 무엇입니까?

내 intern.js 구성 파일 Node.js를에서 실행 테스트 인턴를 사용하기 위해 노력하고있어 뭔가 같은 :

define({ 
    loader: {   
      packages: [ 
       { name: 'elenajs', location: 'lib' }, 
       { name: 'tests', location: 'tests' } 
      ], 
      map: { 
       'elenajs': { dojo: 'node_modules/dojo' }, 
       'tests': { dojo: 'node_modules/dojo' } 
      } 
    }, 
    suites: [ 'tests/all' ]}); 

내가 node node_modules/intern/client.js config=tests/intern로 테스트를 실행하려고, 이 오류 메시지는 Error: node plugin failed to load because environment is not Node.js입니다.

는 일반적으로 나는

dojoConfig = { 
    ... 
    hasCache: { 
     "host-node": 1, // Ensure we "force" the loader into Node.js mode 
     "dom": 0 // Ensure that none of the code assumes we have a DOM 
    }, 
    ... 
}; 

어떻게 인턴으로이 문제를 해결할 수있는 같은과 도장을 구성한 것?

답변

3

당신은 도장 로더에서 설정되는-규칙이 특정에 의존 도장의 코드가 있다는 사실로 인해 발생 발생하는 문제지만, 도장 로더가 아니기 때문에 이런 일이 발생하지 않습니다 사용.

인턴의 로더가 동일한 규칙의 일부를 설정 때문에
  1. , 당신은 intern/node_modules/dojo/has을로드하고 아무것도 당신의 dojo/has 모듈을로드하려고하기 전에 has.add('dojo-has-api', true)을 실행할 수 있습니다 잠재적 인 해결 방법 중 몇 가지 있습니다. Dojo는 인턴 로더의 has.js 구현을 사용하고 (이미 포함 된 모든 규칙을 채택해야합니다. 현재는 host-node이 포함되어 있습니다). 이 작업을 수행 할 수있는 가장 좋은 장소는 다음과 같이 끝나게 것 인턴 구성 파일, 될 것입니다 : has('host-node'), 부하 dojo/hasintern/node_modules/dojo/has를 호출 dojoHas.add('host-node', internHas('host-node'))를 호출 어떤 모듈을로드하기 전에

    define([ 'intern/dojo/has' ], function (has) { 
        has.add('dojo-has-api', true); 
    
        return { 
         // your existing Intern configuration object… 
        }; 
    }); 
    
  2. 을 (또는 I 추측하면 하드 코딩 할 수 있습니다 :)). 이 로더 플러그인이 당신의 suites 배열 대신에 사용되는 필요 : 다음

    // tests/preload.js 
    define({ 
        load: function (id, require, callback) { 
         require([ 'dojo/has' ], function (has) { 
          has.add('host-node', true); 
          require(id.split(/\s*,\s*/), callback); 
         } 
        } 
    }); 
    

    그리고 당신의 suitessuites: [ 'tests/preload!tests/all,tests/foo,tests/bar' ]로 변경합니다.

다른이가-규칙 도장 코드를 직접 설정해야합니다 도조 로더에 의해 설정되어 있는지에 의존한다. Dojo가 다른 부분에서 추가 한 다른 규칙은 올바르게 작동합니다.

+0

나는 똑같은 문제에 직면했다. 정말 고마워. 완벽하게 작동했다. –

관련 문제