2014-04-03 3 views
6

인턴 유닛 테스트가 테스트중인 소스 코드와 다른 디렉토리 트리에 있어야하는 프로젝트가 있습니다. 다소 다음과 같이 : 인턴 구성 파일에서Selenium을 통해 테스트를 실행할 때 Intern 디렉토리 외부의 종속성로드

projectRoot 
projectRoot/src 
projectRoot/tests 
projectRoot/tests/intern.js 
projectRoot/tests/node_modules/intern 
projectRoot/tests/MyTestSuite.js 

, I는 단위 테스트 스위트에서 src에 도달 ../와 상대 경로를 사용하는 AMD 패키지를 정의합니다.

define({ 
    environments: [ { browserName: 'chrome', platform: 'WINDOWS' }], 
    webdriver: { host: 'localhost', port: 4444 }, 
    useSauceConnect: false, 
    loader: { 
    packages: [ 
      { name: 'testSuites', location: '.' }, 
      { name: 'externalDep', location: '../src' } 
     ] 
    }, 
    suites: [ 'testSuites/MyTestSuite' ] 
}); 

과 일치하는 단위 테스트 스위트 브라우저 (client.html) 또는 노드 (client.js)에서 직접 테스트 할 때 잘 작동

define([ "intern!tdd", "intern/chai!assert","externalDep/ExternalDep"], 
    function(tdd, assert, ExternalDep) { 
    tdd.suite("Suite that has external dependency", function() { 
     tdd.test("Test if external dependency is loaded correctly", function() { 
     assert(ExternalDep === "hello"); 
     }); 
    }); 
    } 
); 

예를 들면 다음과 같습니다 구성입니다. 그러나 Selenium Server (runner.js 포함)를 통해 실행되면 Selenium에서 시작한 브라우저에서 실행중인 client.html은 외부 종속성을 찾을 수 없습니다. 위의 예에서 ExternalDep을 http://localhost:9000/__intern/src/ExternalDep.js, 즉 src 디렉터리가 인턴 내에 없기 때문에 404를 요청하려고합니다.

필자는 intern.js를 테스트와 소스 코드 모두의 최상위 공통 수퍼 디렉토리에 넣으면 작동한다고 가정합니다. 그러나 우리 프로젝트는 현재 비실용적 인 방식으로 설정되어 있습니다. 인턴 구성 파일의 위치를 ​​벗어나는 소스를 구성하는 방법이 있습니까? 아니면 그냥 바보 같은 실수를 저 지르지 않았습니까?

감사합니다.

+0

동일한 문제가있을 수 있습니다. 여기에서 문제를 열었습니다. https://github.com/theintern/intern/issues/204 – ben

답변

1

나머지 코드와 다른 디렉토리에 테스트를 넣는 데 아무런 문제가 없지만 projectRoot은 러너를 시작하는 작업 디렉토리 여야하며 일치하도록 로더 구성을 변경해야합니다.

그래서, 대신 지금이 같은 projectRoot/tests에서 인턴을 시작하는 곳의 :

…/projectRoot$ ./tests/.bin/intern-runner config=tests/intern 

을 ... 그리고 로더 구성을 변경 :

…/projectRoot/tests$ ./.bin/intern-runner config=intern 

당신은 projectRoot에서 시작해야

loader: { 
    packages: [ 
      { name: 'testSuites', location: 'tests' }, 
      { name: 'externalDep', location: 'src' } 
     ] 
    },