Подтвердить что ты не робот

Тестирование блоков JavaScript в Rails 3.1

Мне интересно, какой самый простой способ выполнить тестирование JavaScript Unit как часть приложения Rails 3.1.

Мне нравится Jasmine много, и он работает очень хорошо (хотя некоторые трюки необходимы для того, чтобы забрать файлы .coffee).

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

То, что я действительно хочу, - это Jasmine + несколько тестовых наборов в нескольких файлах (так что он генерирует несколько html файлов, включая файлы спецификаций).

В дополнение к этому, я хочу запускать тесты (надеюсь, легко) в браузерах, без головы или внутри JS-движка (когда это возможно).

Любые рекомендации?

4b9b3361

Ответ 1

На данный момент я не нашел разумного ответа на этот вопрос. Но проблема № 24 jasminerice, вероятно, закрывает ответ, если он будет реализован

Ответ 2

Teaspoon делает в значительной степени то, что вы ищете.

Я написал большую часть этого, и это основано на моем опыте написания спецификаций javascript и использовании Rails 3.1/coffeescript. Ваш вопрос включает в себя некоторые из тех вещей, которые заставили меня хотеть внести свой вклад в первую очередь.

EDIT:

Чтобы уточнить, Teaspoon поддерживает определение нескольких наборов, имеет задачу rake, поддерживает использование Selenium Webdriver или PhantomJS в качестве драйверов, Jasmine, Mocha или QUnit, позволяет запускать из командной строки (например, bundle exec teaspoon spec/javascripts/my_spec.coffee) и несколько других приятных вещей.

Ответ 3

Где я работаю, мы хотели найти решение, охватывающее почти то, о чем вы говорите.

Мы рассмотрели следующие рамки:

Мы наконец выбрали чайную ложку. Это требовало минимальной настройки, и было легко интегрироваться с нашим CI. Он предоставляет сюиты, поддержку конвейера активов (чтобы вы могли протестировать .coffee без хаков), и он может работать в RAILS_ENV = test

Ответ 4

Возможно, вы захотите попробовать 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

Ответ 5

Возможно, попробуйте jasmine-headless-webkit (https://github.com/johnbintz/jasmine-headless-webkit). Это дает возможность запускать ваши спецификации Jasmine в браузере без браузера WebKit.