Вау, какой беспорядок. Это сценарий.Жасмин + JSTestDriver + Покрытие + RequireJS
- Магистральный привод JS.
RequireJS для функциональности AMD, инициализируется так:
<script data-main="js/main" src="js/require.js" type="text/javascript"></script>
затем внутри main.js следующий код конфигурации:
require.config( { paths: { ... : ... } });
Каждый Backbone View/модель/маршрутизатор является «определить (. ..) "и" require ("theOneRouter", ...) "вызывается один раз в main.js.
r.js используется как оптимизатор с Uglify/Closure. Один «скомпилированный» main.js создается в подкаталоге ./release, который я динамически выбираю в рамках моей .net.
Потребовалось некоторое время, чтобы получить опорную магистраль + Require.JS, но отлично работает сейчас!
Тогда шлепанье Жасмина на вершине этого также заняло небольшую индивидуальную работу, но все получилось просто отлично. Мне пришлось загрузить require.js из моего SpecRunner.html, определить каждый тестовый модуль как AMD, используя вызов define (...), и я создаю экземпляр & запустите Jasmine один раз после вызова вызова require (...) в SpecRunner.html:
require( [ //"test/specs/testSpec1", "test/specs/views" ], function() { jasmine.getEnv().updateInterval = 1000; var reporter = new jasmine.TrivialReporter(); jasmine.getEnv().addReporter(reporter); .... .... });
это тоже отлично работает. Тесты загружаются & run, без проблем. Требование заботится обо всем.
Теперь я хотел бы, чтобы механизм, такой как JSTestDriver, стал моим бегуном. Я выбрал JSTD, потому что это простота, возможность тестирования на удаленных браузерах, поддержка покрытия кода, но я все еще открыт для других предложений.
JSTestDriver сам по себе работает нормально, единственная проблема, с которой я столкнулся, заключается в совместном использовании JSTD + Jasmine + ReuireJS. Самой большой проблемой является, если я скажу JSTD в конфигурационном файле о Jasmine/Требуют тестовый модуль для того, чтобы загрузить его, я получаю следующее сообщение об ошибке:
http://requirejs.org/docs/errors.html#mismatch
Если я использую r.js в optmize все мой код в один main.js, комбинация работает, в том числе Coverage, но покрытие собирается на один гигантский файл и трудно анализируется. Не говоря уже о том, что очень долго приходится обрабатывать файл js 50k-строк кода и запускать его через JSTD.
Я попытался создать файл js-файла, который загружает все мои тестовые модули Jasmine &, но я продолжаю возвращаться к вышеуказанной ошибке «несоответствия», И, если я не расскажу JSTD о каждом модуле отдельно (загружая html/js-устройство, которое выполняет реальную загрузку), они не получат инструментарий для покрытия кода.
Кто-нибудь получил эту конкретную комбинацию для работы? Возможно, я прошу слишком много ...
Спасибо за ввод, хороший комментарий. Да, вы правы в своих точках, и я пробовал вручную называть мои модули и использовать вызовы вместо функции define(), но это не приемлемое решение: даже если оно автоматизировано, для этого потребуется существенная дополнительная работа, выполняемая до каждый тестовый прогон, который я бы хотел избежать во время разработки тестов во время разработки. – Bernardo
Итак, теперь у меня есть исправленная версия jsTestDriver.jar, которая позволяет экслюзионы файлов с помощью регулярных выражений. Он также позволяет загружать файлы JavaScript из раздела «serve». Обслуживание исходных файлов JavaScript означает, что они не будут автоматически выполняться при загрузке страниц браузеров. Вместо этого, когда браузер выполняет require.js, require может вытащить файлы из секции обслуживания. Таким образом, модули могут быть анонимными без каких-либо проблем. См. [Магистральная проверка] (http://pseudobry.com/backbone-testing/) – jdobry