Ответ 1
На данный момент я не нашел разумного ответа на этот вопрос. Но проблема № 24 jasminerice, вероятно, закрывает ответ, если он будет реализован
Мне интересно, какой самый простой способ выполнить тестирование JavaScript Unit как часть приложения Rails 3.1.
Мне нравится Jasmine много, и он работает очень хорошо (хотя некоторые трюки необходимы для того, чтобы забрать файлы .coffee
).
Единственная проблема с Jasmine заключается в том, что она запускает все примеры тестов на одной огромной странице, что очень проблематично, так как требует загрузки ВСЕ скриптов.
То, что я действительно хочу, - это Jasmine + несколько тестовых наборов в нескольких файлах (так что он генерирует несколько html файлов, включая файлы спецификаций).
В дополнение к этому, я хочу запускать тесты (надеюсь, легко) в браузерах, без головы или внутри JS-движка (когда это возможно).
Любые рекомендации?
На данный момент я не нашел разумного ответа на этот вопрос. Но проблема № 24 jasminerice, вероятно, закрывает ответ, если он будет реализован
Teaspoon делает в значительной степени то, что вы ищете.
Я написал большую часть этого, и это основано на моем опыте написания спецификаций javascript и использовании Rails 3.1/coffeescript. Ваш вопрос включает в себя некоторые из тех вещей, которые заставили меня хотеть внести свой вклад в первую очередь.
EDIT:
Чтобы уточнить, Teaspoon поддерживает определение нескольких наборов, имеет задачу rake, поддерживает использование Selenium Webdriver или PhantomJS в качестве драйверов, Jasmine, Mocha или QUnit, позволяет запускать из командной строки (например, bundle exec teaspoon spec/javascripts/my_spec.coffee
) и несколько других приятных вещей.
Где я работаю, мы хотели найти решение, охватывающее почти то, о чем вы говорите.
Мы рассмотрели следующие рамки:
Мы наконец выбрали чайную ложку. Это требовало минимальной настройки, и было легко интегрироваться с нашим CI. Он предоставляет сюиты, поддержку конвейера активов (чтобы вы могли протестировать .coffee без хаков), и он может работать в RAILS_ENV = test
Возможно, вы захотите попробовать evergreen
(https://github.com/jnicklas/evergreen). Это позволяет вам создавать тестовые файлы с помощью jasmine
и запускать тесты в браузерах, без головы или внутри JS-движка.
Вы можете найти использование этого драгоценного камня в разделе readme https://github.com/jnicklas/evergreen#readme
К сожалению, вечнозеленый не очень хорошо работает с новыми функциями рельсов 3.1 (в то время, когда этот ответ был сделан). Поэтому я пытаюсь создать какой-то патч обезьяны, чтобы он хорошо играл.
# config/evergreen.rb
unless defined?(CONFIG_EVERGREEN_LOADED)
CONFIG_EVERGREEN_LOADED = true
require ::File.expand_path('../environment', __FILE__)
unless "".respond_to?(:each) # this monkey patch make the old capybara play well with ruby 1.9.2
String.class_eval do
def each &block
self.lines &block
end
end
end
module Evergreen
class << self
def application_with_additions(suite)
app = application_without_additions(suite)
app.map "/assets" do
assets = Rails.application.config.assets
if assets.enabled
require 'sprockets'
sprockets = Sprockets::Environment.new(suite.root)
sprockets.static_root = File.join(suite.root, 'public', assets.prefix)
sprockets.paths.concat assets.paths
sprockets.js_compressor = nil
run sprockets
end
end
app
end
alias_method :application_without_additions, :application
alias_method :application, :application_with_additions
end
end
Возможно, попробуйте jasmine-headless-webkit
(https://github.com/johnbintz/jasmine-headless-webkit). Это дает возможность запускать ваши спецификации Jasmine в браузере без браузера WebKit.