Учитывая типичную среду Rails 3, почему я не могу выполнить какие-либо тесты?

Я работаю над написанием простых модульных тестов для проекта Rails 3, но на самом деле я не могу выполнить какие-либо тесты.

Показательный пример, попытка запустить тест, автоматически сгенерированный Rails, завершается неудачно:

require 'test_helper'

class UserTest < ActiveSupport::TestCase
  # Replace this with your real tests.
  test "the truth" do
    assert true
  end
end

приводит к следующей ошибке:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
test_helper (LoadError)
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from user_test.rb:1:in `<main>'

Комментирование строки require 'test_helper' и попытка запустить результаты теста в этой ошибке:

user_test.rb:3:in `<main>': uninitialized constant Object::ActiveSupport (NameError)

Gems пакета действий выглядит правильно установленным и обновленным:

actionmailer (3.0.3, 2.3.5)
actionpack (3.0.3, 2.3.5)
activemodel (3.0.3)
activerecord (3.0.3, 2.3.5)
activeresource (3.0.3, 2.3.5)
activesupport (3.0.3, 2.3.5)

Ruby - 1.9.2p0, а Rails - 3.0.3.

Пример дампа моего тестового каталога выглядит следующим образом:

/fixtures
/functional
/integration
/performance
/unit
-- /helpers
   -- user_helper_test.rb
-- user_test.rb
test_helper.rb

Я никогда не видел этого проблема раньше - я выполнял типичные задачи rake для подготовки тестовой среды. У меня нет ничего необычного в моем приложении или файлах конфигурации среды, и я не устанавливал никаких необычных гемов, которые могли бы помешать работе тестовой среды.

Редактировать 9 марта

Предложение Ксавьера Холта , явно указав путь к test_helper сработал; Однако, это выявило проблему с ActiveSupport.

Теперь, когда я пытаюсь запустить тест, я получаю следующее сообщение об ошибке (также перечисленное выше):

user_test.rb:3:in `<main>': uninitialized constant Object::ActiveSupport (NameError)

Но, как вы можете видеть выше, пакет действий установлен и обновлен до дата.

Редактировать 13 марта

При попытке запустить тесты с использованием rake test: units следующая трассировка стека выгружается на консоль:

test/unit/bookmark_test.rb:3:in `<top (required)>': uninitialized constant Objec
t::ActiveSupport (NameError)
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `load'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `block in <main>'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `each'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb:5:in `<main>'
rake aborted!

Итак, глядя в файл, указанный выше, я вижу следующее:

#!/usr/bin/env ruby

# Load the test files from the command line.

ARGV.each { |f| load f unless f =~ /^-/  }

Насколько мне известно, все выглядит так, как ожидалось.

7
задан Community 23 May 2017 в 12:19
поделиться