Я сделал нечто подобное для Жасмин. Я написал задачу Rake, которая компилирует некоторые шаблоны HAML в HTML и помещает их в путь приспособлений Jasmine. Затем я настроил задачу Rake как зависимую, чтобы она выполнялась перед задачей jasmine:ci
. Вот задача Rake, которую я написал:
namespace :dom do
namespace :fixtures do
target_path = "spec/javascripts/fixtures"
template_path = "spec/javascripts/templates"
task :compile do
view_paths = ActionController::Base.view_paths
view_paths << template_path
view = ActionView::Base.new(view_paths, {})
Dir.glob File.join(template_path, '*') do |path|
template = File.basename(path)
template = template.slice(0...template.index('.')) if template.index('.')
target = File.join(target_path, template) + ".html"
puts "Rendering fixture '#{template}' to #{target}"
File.open(target, 'w') do |f|
f.write view.render(:file => template, :layout => false)
end
end
end
task :clean do
Dir.glob File.join(target_path, '*') do |path|
File.delete path
end
end
end
end
namespace :spec do
desc "Run specs in spec/javascripts"
task :javascripts => ['dom:fixtures:compile', 'jasmine:ci']
end
Это позволяет вам писать шаблоны HAML или ERB в spec/javascript/templates
, и они компилируются в spec/javascript/fixtures
, который затем может быть загружен Jasmine. Строка view_paths = ActionController::Base.view_paths
делает партиалы вашего приложения доступными для шаблонов в spec/javascript/templates
. Вам, вероятно, придется настроить этот пример, чтобы сделать своих помощников доступными. Наконец, я должен упомянуть, что это из приложения Rails 2.3. Я еще не пробовал это в Rails 3.x Надеюсь, это поможет.