Как эффективно использовать Jasmine для тестирования ресурсов Javascript, упакованных с помощью Jammit?
У меня есть приложение rails, которое комбинирует ресурсы javascript с использованием Jammit, и я хотел бы использовать Jasmine для тестирования моего javascript в стиле BDD. Мне интересно, есть ли у кого-нибудь совет по получению доступа к сгенерированным Jammit 'pacakges' изнутри Жасмин?
Проблема заключается в том, что Jasmine настраивается путем определения списка файлов JS на диске для тестирования, а затем включает эти файлы в свою собственную страницу запуска тестов, которая загружается и запускается в браузере.
Я мог бы сослаться на каждый из отдельных файлов JS внутри файла конфигурации jasmine.yml до того, как они будут упакованы с Jammit... однако Jammit уже имеет дело с зависимостями между файлами для меня, и, что более важно, мне также нужен доступ к скомпилированные шаблоны Javascript, которые производит Jammit.
Я также мог бы вручную запустить Jammit для генерации скомпилированных активов, а затем запустить Jasmine, но я бы столкнулся с необходимостью заново генерировать ресурсы вручную перед каждым запуском теста, чтобы проверить изменения, что серьезно ограничило бы быстрый тест. управляемый тип рабочего процесса.
Мне интересно, смогу ли я как-нибудь
- Смонтировать контроллер Jammit из стеллажа сервера Jasmine, чтобы он мог обслуживать пакеты от Jasmine? В основном это будет работать так же, как Jammit уже из среды разработки Rails.
- Как-нибудь подключиться к Jasmine, чтобы упаковать ресурсы при каждой загрузке страницы перед выполнением тестов? Это будет медленнее, но спасет меня на шаг и обеспечит актуальность.
Какие-либо предложения? Я только начинаю с этим, так что я могу ошибаться. Любой совет будет принята с благодарностью.:-)
Спасибо! -John
2 ответа
Вот волшебная комбинация, которую вы ищете:
- Используйте драгоценный камень стража вместе с драгоценным камнем охранника, чтобы следить за изменениями в активах вашего проекта.
- Установите плагин LiveReload в выбранном вами браузере и установите гем guard-livereload, чтобы ваш браузер мог автоматически перезагружаться при изменении ваших спецификаций или активов.
- Включите охрану, затем наберите "Жасмин", затем загрузите свои спецификации жасмина в браузере, затем нажмите кнопку "живой перезагрузки", чтобы подключиться к серверу "живой перезагрузки", который был запущен охранником.
- Измените свои файлы. Наблюдайте, как происходит волшебство, когда охранник запускает jammit и инструктирует ваш браузер обновить спецификации жасмина.
Вот пример Guardfile для начала работы:
guard 'jammit' do
watch(%r{public/javascripts/(.*)\.js})
watch(%r{app/views/jst/(.*)\.jst})
watch(%r{public/stylesheets/(.*)\.css})
end
guard 'livereload', :apply_js_live => false do
watch(%r{app/.+\.(erb|haml)})
watch(%r{app/helpers/.+\.rb})
watch(%r{public/.+\.(css|js|html)})
watch(%r{config/locales/.+\.yml})
watch(%r{spec/javascripts/.+\.js})
end
Я придумал правильное решение: принудительно перезагрузить Jammit и упаковать его при запуске jasmine. Для этого вам нужно отредактировать файл jasmine_config.rb:
require 'jammit'
module Jasmine
class Config
Jammit.reload!
Jammit.package!
end
end
Я написал немного более подробный пост об этом здесь: http://www.rebeccamiller-webster.com/2011/05/jammit-jasmine-bdd/