Как я могу эффективно использовать Jasmine для тестирования активов JavaScript, упакованных через Jammit?
-
27-10-2019 - |
Вопрос
У меня есть приложение Rails, которое объединяет активы JavaScript Джаммит, и я хотел бы использовать Жасмин Для тестирования в стиле BDD моего JavaScript. Мне интересно, есть ли у кого-нибудь какие-либо советы по доступу к «Pacakges», сгенерированным Jammit, изнутри Жасмин?
Проблема заключается в том, что Жасмин настроен путем определения списка файлов JS на диске для тестирования, а затем включает эти файлы на своей собственной странице Test Runner, которая загружается и запускается в браузере.
Я мог бы ссылаться на каждый из отдельных файлов JS внутри файла конфигурации jasmine.yml, прежде чем они упакованы с Jammit ... Однако, Jammit уже имеет дело с зависимостями между файлами для меня, и, что более важно, мне также нужен доступ к Скомпилирован Шаблоны JavaScript Это дэммит производит.
Я также мог бы вручную запустить Jammit, чтобы сначала сгенерировать скомпилированные активы, а затем запустить Jasmine, но мне пришлось переучить активы вручную перед каждым тестовым прогоном, чтобы проверить изменения, что серьезно сужает быстрый тест- Управляемый рабочий процесс типа.
Мне интересно, смогу ли я как -то:
- Установите контроллер Jammit из стоек -сервера Жасмин, чтобы он мог отдать пакеты из Жасмин? Это в основном сработало бы так же, как и Jammit уже из Env Insure 'Development' Env.
- Зацепите Жасмин как -то упаковать активы на каждой загрузке страницы до выполнения тестов? Это было бы медленнее, но сэкономило бы мне шаг и гарантирует, что все обновлено.
Какие-либо предложения? Я только начинаю с этим, поэтому я мог бы сделать все это неправильно. Любой совет был бы очень признателен. :-)
Спасибо! -Джон
Решение
Вот волшебная комбинация, которую вы ищете:
- Использовать охранник Gem вместе с Guard-Jammit Gem Чтобы следить за изменениями в активах вашего проекта
- Установить Плагин Livereload в браузере по вашему выбору и установите Guard-Livereload Gem Таким образом, вы можете перезагрузить свой браузер, когда ваши характеристики или активы меняются.
- Зажги охраняйте, затем сбросите Жасмин, затем загрузите свои спецификации жасмина в браузер, затем нажмите кнопку с живой перезагрузкой, чтобы подключиться к серверу с живой нагрузкой, который запустил охранник
- Измените свои файлы. Посмотрите, как волшебство происходит, когда охранник управляет 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
Другие советы
Я придумал OK Solution: заставляйте Jammit для перезагрузки и упаковки, когда начинается Жасмин. Для этого вам нужно отредактировать файл 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/