2014-04-03 13 views
6

Mam projekt, w którym testy jednostek wewnętrznych powinny znajdować się w innym drzewie katalogów niż testowany kod źródłowy. Trochę tak:Ładowanie zależności poza katalogiem Intern podczas uruchamiania testów przez Selenium

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

W Intern pliku konfiguracyjnego zdefiniować pakiet AMD, który używa ścieżki względne z ../ dotrzeć src z zestawów testów jednostkowych. Oto przykład konfiguracji:

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' ] 
}); 

a test suite dopasowanie jednostka

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"); 
     }); 
    }); 
    } 
); 

Działa to dobrze, gdy testowane bezpośrednio w przeglądarce (client.html) lub węzła (client.js). Po uruchomieniu przez serwer Selenium (z runner.js), plik client.html uruchomiony w przeglądarce uruchomionej przez Selenium nie może znaleźć zewnętrznych zależności. W powyższym przykładzie próbuje zażądać ExternalDep pod adresem http://localhost:9000/__intern/src/ExternalDep.js, który jest 404 ponieważ katalog src nie znajduje się w pamięci wewnętrznej.

Przypuszczam, że jeśli wstawię plik intern.js do najwyższego wspólnego super-katalogu zarówno testów, jak i kodu źródłowego, będzie działał. Ale nasz projekt jest obecnie skonfigurowany w sposób, który czyni to niepraktycznym. Czy istnieje sposób na konfigurowanie źródeł, które żyją poza lokalizacją pliku konfiguracyjnego Intern, czy też popełniłem głupi błąd?

Dzięki!

+0

Mogę mieć ten sam problem; Otworzył problem tutaj: https://github.com/theintern/intern/issues/204 – ben

Odpowiedz

1

Nie ma problemu z umieszczeniem testów w innym katalogu niż reszta kodu, ale projectRoot musi być katalogiem roboczym, od którego uruchamiasz runner, i musisz zmienić konfigurację programu ładującego, aby pasowała.

Więc zamiast teraz gdzie zaczynają Intern od projectRoot/tests tak:

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

trzeba zacząć go od projectRoot:

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

... i zmienić konfigurację programu ładującego:

loader: { 
    packages: [ 
      { name: 'testSuites', location: 'tests' }, 
      { name: 'externalDep', location: 'src' } 
     ] 
    }, 
Powiązane problemy