рейк не работает юнит тесты - PullRequest
6 голосов
/ 02 сентября 2010

Я обновил свое приложение с использования config.gem до Gemfile с компоновщиком и заметил, что мои модульные тесты теперь прекратились. Это немного странно, и я не совсем уверен, с чего начать.

Когда я запускаю rake test:units --trace, я вижу, что моя среда настраивается, и в ней перечислены файлы, которые она намеревается выполнить, но потом просто возвращается.

То же самое происходит, если я пытаюсь запустить один отдельный файл, используя что-то вроде: rake -I"lib:test" test/unit/foo.rb или autotest.

Это все очень странно. Как будто файлы загружаются, но сами модульные тесты не запускаются.

Я использую shoulda и fast_context, и я подумал, что это может быть проблемой, но если я включу модульный тест с использованием стандартного синтаксиса def test_, он все равно не запустится, поэтому я не думаю, что это те.

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

<Ч />

Так вот, где я сейчас нахожусь:

Мои причины для использования bundler заключаются в установке зависимостей на heroku и потому, что я хотел использовать гем, полученный из репозитория git на github. Короче говоря, я удалил preinitializer для компоновщика и вернулся к использованию config.gem. Чтобы обойти тот факт, что я не могу использовать репозиторий github, используя config.gem, я выдвинул свою собственную копию в рубины. Это был правильный ход?

<Ч />

Вот preinitializer.rb

begin
  require "rubygems"
  require "bundler"
rescue LoadError
  raise "Could not load the bundler gem. Install it with `gem install bundler`."
end

if Gem::Version.new(Bundler::VERSION) <= Gem::Version.new("0.9.24")
  raise RuntimeError, "Your bundler version is too old for Rails 2.3." +
   "Run `gem install bundler` to upgrade."
end

begin
  # Set up load paths for all bundled gems
  ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
  Bundler.setup
rescue Bundler::GemNotFound
  raise RuntimeError, "Bundler couldn't find some gems." +
    "Did you run `bundle install`?"
end

Я не знаю, как файл .gems был бы полезен, потому что это только геройская вещь, и мне пришлось бы искать его через git, но вот мой гемфайл.

source :gemcutter

gem 'rails', '2.3.9'
gem 'pg'
gem 'minitest'
gem 'RedCloth'
gem 'erubis'
#gem 'memcached'
gem 'daemons'
gem 'resque'

gem 'inherited_resources', '1.0.6'
gem 'clearance', '0.8.8'
gem 'acl9'
gem 'sprockets'

gem 'aws-s3'
gem 'paperclip', '2.3.1.1'
gem 'rmagick', '2.12.2'

gem 'jonnii-cheddargetter', '0.1.3'

gem 'attribute_normalizer'

gem 'formtastic', '1.1.0.beta'
gem 'will_paginate', '2.3.14'

gem 'hoptoad_notifier'
gem 'mixpanel_client'

gem 'sunspot'
gem 'websolr-sunspot_rails'

gem 'geokit'
gem 'ri_cal'

gem 'jonnii-yelp'

group :development, :test do
  gem 'test-spec'
  gem 'shoulda'

  gem 'redgreen'
  gem 'factory_girl'
  gem 'populator'
  gem 'faker'

  gem 'ZenTest'
  gem 'autotest-rails'

  gem 'webrat'
  gem 'cucumber'
  gem 'cucumber-rails'
  gem 'database_cleaner'
  gem 'parallel'
  gem 'hydra'
  gem 'heroku'
  gem 'taps'
  gem 'ruby-prof'
  gem 'treetop'
  gem 'rspec'
  gem 'rspec-rails'
end

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Возникла та же проблема. Просто удалите драгоценный камень 'гидра', чтобы вернуть тестовый модуль в нормальное состояние

0 голосов
/ 27 октября 2010

У меня недавно были проблемы с запуском спецификаций для проекта. Причина была в том, что мне не хватало строки из config / application.rb. В настоящее время эта строка появляется по умолчанию при создании нового проекта rails 3, но если ваш проект был инициализирован некоторое время назад, он может отсутствовать.

# If you have a Gemfile, require the gems listed there, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env) if defined?(Bundler)
0 голосов
/ 19 октября 2010

У вас есть это в конце файла config / boot.rb:

class Rails::Boot
  def run
    load_initializer

    Rails::Initializer.class_eval do
      def load_gems
        @bundler_loaded ||= Bundler.require :default, Rails.env
      end
    end

    Rails::Initializer.run(:set_load_path)
  end
end

(из http://gembundler.com/rails23.html)

...