DOH тестирование функций JavaScript из командной строки за пределами корня Dojo

Я пытаюсь запустить DOH из dojo-1.3.2, чтобы протестировать простые функции Javascript из командной строки. Тем не менее, я не могу заставить что-либо работать, а сеть, похоже, лишена документации командной строки DOH.

В идеале структура, которую я хотел бы, это:

Тесты находятся: C:\myproject\tests\

Местонахождение додзё: C:\dojo-1.3.2\util\doh

На данный момент я поставил простой тест в ..\doh\tests

Я пытаюсь запустить, находясь в каталоге ..\doh:

java -jar ..\shrinksafe\js.jar runner.js testModule=tests.module

Каждый раз, когда я получаю:

js: неперехваченное исключение среды выполнения JavaScript: ReferenceError: «окно» не определено. Произошло исключение: Ошибка: не удалось загрузить «tests.module»; последняя попытка 'tests/module.js' 0 тестов для запуска в 0 группах

Есть ли что-то, что я должен делать, что я упустил? Я также пытался указать на файл dojo.js, используя dojoUrl=, но все равно та же ошибка.

Насколько я вижу, мои тесты нигде не используют окно. У меня есть три файла:

тесты/module.js

dojo.provide("tests.module");
dojo.require("tests.functions.functions");

тесты/функции/функции.js

dojo.provide("tests.functions.functions");
dojo.require("tests.demoFunctions");

doh.register("tests.functions.functions", [
    function test_alwaysTrue(){
        doh.assertTrue(tests.demoFunctions.alwaysTrue());
    }
]);

тесты/demoFunctions.js

    dojo.provide("tests.demoFunctions");

tests.demoFunctions.alwaysTrue = function(){
    return true;
};

Я также попытался реструктурировать каталог, чтобы ../dojo-1.3.2/ содержал тесты. Выполнение той же команды, что и выше, из командной строки не работает точно так же. Структура режиссера:

/dojo-1.3.2

   /dojo
   /tests
   ...
   /util

      /shrinksafe
      ...
      /doh

person memstomp    schedule 21.01.2010    source источник


Ответы (4)


Не уверен, откуда берется «окно», но я не думаю, что doh когда-либо работал должным образом с тестами вне каталога Dojo. Будет ли это работать, если вы скопируете util/doh, чтобы он был коллегой вашего каталога тестов?

person peller    schedule 21.01.2010
comment
Я переместил свой каталог /tests/... в util/doh/ и запустил ту же команду java -jar ..\shrinksafe\js.jar runner.js testModule=tests.module, и у меня все еще есть та же проблема. Я также пробовал обновленную версию js.jar и dojo-1.4.0 runner.js. Ничего не стало лучше. - person memstomp; 21.01.2010
comment
Извините, я переместил папку /tests в одноранговую (на этот раз не дочернюю) папку util/doh/, и она все равно не работает. - person memstomp; 21.01.2010
comment
Хорошо, еще одно... попробуйте переименовать каталог "tests" и все ссылки на тесты.* на что-то еще... Я не знаю, где это, но я думаю, что тесты.* сопоставляются с додзё.* Когда вы запустите runner.js с его тестами dojo по умолчанию, он ссылается на них как на тесты. * Тесты Dijit и DojoX этого не делают. Похоже, что-то, что нужно очистить! - person peller; 22.01.2010
comment
Я все переименовал и все равно ничего. Я заметил, что удаление параметров 'testModule=....' действительно приводит к тому, что DOH заглядывает в каталог dojo.*. Кроме того, при добавлении параметра testUrl=... вывод ошибки немного изменится: ...\util\doh›java -jar ..\shrinksafe\js.jar runner.js testUrl=tests\module.js testModule= test.module js: необработанное исключение времени выполнения JavaScript: ReferenceError: окно не определено. js: ..\..\dojo\dojo.js, строка 16: исключение из неперехваченного броска JavaScript: Ошибка: не удалось загрузить 'tests.functions.functions'; последний раз пробовал '../tests/functions/f unctions.js' - person memstomp; 22.01.2010
comment
Я взял файлы, перечисленные выше, поместил их в одноранговый каталог под названием «тесты», и это не удалось. Я переименовал каталог в 'foo' вместе со всеми тестами.* -> foo.* и это сработало. - person peller; 22.01.2010
comment
Какую именно команду вы использовали? java -jar ..\shrinksafe\js.jar runner.js testModule=foo.module ? Вы используете версию DOH от dojo-1.3.2? Я переместил и переименовал все, как вы упомянули. Возможно ли, что это как-то связано с моей версией js.jar или runner.js? - person memstomp; 22.01.2010
comment
Обновил как js.jar, так и runner.js, и у меня все еще есть проблемы. Я сейчас в растерянности. Спасибо за всю помощь, она действительно ценится, знаете ли вы что-нибудь еще, что может помешать этому работать? - person memstomp; 22.01.2010
comment
Теперь все работает правильно. Спасибо большое. Я считаю, что мой нынешний додзё-1.3.2 был неполным или искаженным по сравнению с исходной формой. Как только я повторно приобрел dojo-1.4.0-src и запустил команду, все было исправлено. Еще раз спасибо за помощь! Используемая последняя команда (для тех, кто наткнулся на эту же проблему и потерял): testFolder должен храниться в вашем каталоге dojo-release-xxx\, а операция командной строки java -jar ..\shrinksafe\js.jar runner.js testModule =testFolder.moduleName Возможно, вам потребуется загрузить папку с уменьшением размера (или rhino) отдельно, а затем добавить ее в .../util/ - person memstomp; 22.01.2010
comment
Здорово. Рад, что ты наконец заработал. Тем не менее, здесь есть как минимум две проблемы: во-первых, вам нужно совместить Dojo и ваши тесты (на это есть открытый тикет), а во-вторых, вы не можете назвать это тестами (вероятно, следует открыть тикет и на это тоже). ) - person peller; 23.01.2010

Если вы хотите, чтобы ваш testFolder хранился вне каталога dojo-release-x.x.x\ по умолчанию. Добавьте в свою команду следующее: registerModulePath=tests,../myproject/tests

Возможно, вам придется правильно отредактировать ../, чтобы определить фактическую структуру каталогов.

person Snehasish Paul    schedule 29.06.2011
comment
registerModulePath теперь устарел, теперь вы должны использовать что-то вроде: paths=myutil,../../mydirectory/myutil - person Daniel Alexiuc; 31.05.2012

Здесь есть патч: http://bugs.dojotoolkit.org/ticket/10511, который позволяет запускать тесты командной строки за пределами корня dojo, но, похоже, они не применялись, во всяком случае, в dojo-1.6.1.

person Andy Balaam    schedule 16.11.2011

Тесты DOH можно запускать в командной строке, включая тесты вне исходного дерева dojo. Создайте такой конфигурационный файл, в котором укажите, где ваши модули кода находятся относительно местоположения dojo/util/doh:

require({
    paths: {
        "org/myorg" : "../../../mycode/org/myorg",
        "com/mycom" : "../../../x/com/mycom"
    }
});

и назовите его config.js. Откройте командное окно и перейдите в каталог, содержащий каталоги «dijit», «dojo», «dojox» и «util». Запустите эту команду:

java -jar util/shrinksafe/js.jar dojo/dojo.js baseUrl=file:///full/path/to/dojo/dojo load=file://full/path/to/config.js load=doh test=com/mycom/tests

Полный ответ находится здесь: http://dojotoolkit.org/reference-guide/1.9/util/doh.html

Здесь есть более подробное объяснение: http://www.artificialworlds.net/blog/2012/10/09/running-dojo-doh-unit-tests-on-the-command-line-with-rhino/

person Andy Balaam    schedule 10.02.2014