Как эффективно использовать 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 ответа

Решение

Вот волшебная комбинация, которую вы ищете:

  1. Используйте драгоценный камень стража вместе с драгоценным камнем охранника, чтобы следить за изменениями в активах вашего проекта.
  2. Установите плагин LiveReload в выбранном вами браузере и установите гем guard-livereload, чтобы ваш браузер мог автоматически перезагружаться при изменении ваших спецификаций или активов.
  3. Включите охрану, затем наберите "Жасмин", затем загрузите свои спецификации жасмина в браузере, затем нажмите кнопку "живой перезагрузки", чтобы подключиться к серверу "живой перезагрузки", который был запущен охранником.
  4. Измените свои файлы. Наблюдайте, как происходит волшебство, когда охранник запускает 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/

Другие вопросы по тегам