Модульное тестирование JavaScript в Rails 3.1 - PullRequest
12 голосов
/ 09 июня 2011

Мне интересно, как проще всего выполнить тестирование JavaScript Unit в составе приложения Rails 3.1.

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

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

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

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

Есть рекомендации?

Ответы [ 5 ]

6 голосов
/ 27 декабря 2012

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

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

EDIT:

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

3 голосов
/ 12 июля 2013

Там, где я работаю, мы хотели найти решение, которое бы в значительной степени охватывало то, что вы упоминаете.

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

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

2 голосов
/ 09 июня 2011

Возможно, вы захотите попробовать evergreen (https://github.com/jnicklas/evergreen).). Он позволяет вам писать тестовые случаи с jasmine и запускать ваши тесты в браузерах, в автономном режиме или в движке JS.

Вы можете найти использование этого драгоценного камня в разделе readme https://github.com/jnicklas/evergreen#readme

К сожалению, вечнозеленый еще не очень хорошо работает с новой функцией rails 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
0 голосов
/ 29 июня 2012

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

0 голосов
/ 09 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...