Как я могу эффективно использовать Jasmine для тестирования активов javascript, упакованных через Jammit?

У меня есть приложение rails, которое объединяет активы javascript с помощью Jammit, и я хотел бы использовать Jasmine для тестирования моего javascript в стиле BDD. Мне интересно, есть ли у кого-нибудь совет по доступу к «пакетам», созданным Jammit, из Jasmine?

Проблема в том, что Jasmine настраивается путем определения списка файлов JS на диске для тестирования, а затем включает эти файлы на свою собственную страницу запуска тестов, которая загружается и запускается в браузере.

Я мог бы сослаться на каждый из отдельных JS-файлов внутри конфигурационного файла jasmine.yml, прежде чем они будут упакованы с помощью Jammit... однако Jammit уже имеет дело с зависимостями между файлами для меня, и, что более важно, мне также нужен доступ к скомпилированные шаблоны JavaScript, созданные Jammit.

Я также мог бы вручную запустить Jammit, чтобы сначала сгенерировать скомпилированные ресурсы, а затем запустить Jasmine, но мне пришлось бы повторно генерировать ресурсы вручную перед каждым запуском теста, чтобы проверить изменения, что серьезно затруднило бы быстрое тестирование. рабочий процесс управляемого типа.

Мне интересно, мог бы я как-нибудь:

  • Подключить контроллер Jammit из стоечного сервера Jasmine, чтобы он мог обслуживать пакеты от Jasmine? В основном это будет работать так же, как Jammit уже работает в среде разработки Rails.
  • Как-то подключиться к Jasmine, чтобы упаковать активы при каждой загрузке страницы до выполнения тестов? Это было бы медленнее, но сэкономило бы мне время и обеспечило актуальность.

Какие-либо предложения? Я только начинаю с этим, поэтому я могу все делать неправильно. Мы будем очень признательны за любые советы. :-)

Спасибо! -Джон


person John Reilly    schedule 29.04.2011    source источник
comment
Удачи в этом? У меня та же проблема - я в порядке, включая файлы js, но меня убивает создание объекта JST.   -  person rmw    schedule 20.05.2011


Ответы (2)


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

  1. Используйте guard gem вместе с guard-jammit gem, чтобы следить за изменениями в ресурсах вашего проекта.
  2. Установите плагин LiveReload в выбранный вами браузер и установите geme Guard-livereload, чтобы ваш браузер автоматически перезагружался при изменении ваших спецификаций или активов.
  3. Запустите охрану, затем разгребите жасмин, затем загрузите спецификации жасмина в браузере, затем нажмите кнопку перезагрузки в реальном времени, чтобы подключиться к серверу перезагрузки в реальном времени, который запустил охранник.
  4. Измените свои файлы. Наблюдайте, как происходит волшебство, когда охранник запускает jammit и дает указание вашему браузеру обновить спецификации jasmine.

Вот пример 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
person Gabe Hollombe    schedule 20.05.2011

Я придумал нормальное решение: заставить 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/

person rmw    schedule 19.05.2011