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

StackOverflow https://stackoverflow.com/questions/5833929

Вопрос

У меня есть приложение Rails, которое объединяет активы JavaScript Джаммит, и я хотел бы использовать Жасмин Для тестирования в стиле BDD моего JavaScript. Мне интересно, есть ли у кого-нибудь какие-либо советы по доступу к «Pacakges», сгенерированным Jammit, изнутри Жасмин?

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

Я мог бы ссылаться на каждый из отдельных файлов JS внутри файла конфигурации jasmine.yml, прежде чем они упакованы с Jammit ... Однако, Jammit уже имеет дело с зависимостями между файлами для меня, и, что более важно, мне также нужен доступ к Скомпилирован Шаблоны JavaScript Это дэммит производит.

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

Мне интересно, смогу ли я как -то:

  • Установите контроллер Jammit из стоек -сервера Жасмин, чтобы он мог отдать пакеты из Жасмин? Это в основном сработало бы так же, как и Jammit уже из Env Insure 'Development' Env.
  • Зацепите Жасмин как -то упаковать активы на каждой загрузке страницы до выполнения тестов? Это было бы медленнее, но сэкономило бы мне шаг и гарантирует, что все обновлено.

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

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

Это было полезно?

Решение

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

  1. Использовать охранник Gem вместе с Guard-Jammit Gem Чтобы следить за изменениями в активах вашего проекта
  2. Установить Плагин Livereload в браузере по вашему выбору и установите Guard-Livereload Gem Таким образом, вы можете перезагрузить свой браузер, когда ваши характеристики или активы меняются.
  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

Другие советы

Я придумал 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/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top