Получение неинициализированной постоянной ошибки при попытке запустить тесты

С этим методом можно передать в abitrary длине. Это установлено как значение по умолчанию как 6.

def generate_random_string(length=6)
  string = ""
  chars = ("A".."Z").to_a
  length.times do
    string << chars[rand(chars.length-1)]
  end
  string
end
12
задан Simone Carletti 18 July 2009 в 11:11
поделиться

11 ответов

Это может произойти, если модули объявлены в одном операторе, когда родительский модуль, в который они вложены, еще не загружен. Я не смотрел на код этих драгоценных камней, но подозреваю, что именно это и происходит. Решение Чака предполагает это. вызов gem 'test-unit' сначала загрузит родительский модуль, поэтому установка zen test работает нормально.

например,

module Foo::Bar
  def do_stuff
    # insert awesomeness here...
  end
end

приведет к ошибке, если родительский модуль Foo не имеет ' t уже был определен (например, другим гемом)

Более безопасный способ объявить, что это

module Foo
  module Bar
    def do_stuff
      # insert awesomeness here...
    end
  end
end

Может быть ошибкой в ​​Zentest, требующей исправления.

Решение s предполагает это. вызов gem 'test-unit' сначала загрузит родительский модуль, так что установка zen test работает нормально.

например,

module Foo::Bar
  def do_stuff
    # insert awesomeness here...
  end
end

приведет к ошибке, если родительский модуль Foo не имеет ' t уже был определен (например, другим гемом)

Более безопасный способ объявить, что это

module Foo
  module Bar
    def do_stuff
      # insert awesomeness here...
    end
  end
end

Может быть ошибкой в ​​Zentest, которая требует исправления.

Решение s предполагает это. вызов gem 'test-unit' сначала загрузит родительский модуль, так что установка zen test работает нормально.

например,

module Foo::Bar
  def do_stuff
    # insert awesomeness here...
  end
end

приведет к ошибке, если родительский модуль Foo не имеет ' t уже был определен (например, другим гемом)

Более безопасный способ объявить, что это

module Foo
  module Bar
    def do_stuff
      # insert awesomeness here...
    end
  end
end

Может быть ошибкой в ​​Zentest, требующей исправления.

10
ответ дан 2 December 2019 в 05:28
поделиться

Вот рецепт для test_unit 2.0.7 в Rails 2.3.5:

В config / environment / test.rb:

config.gem 'test-unit', :version => '2.0.7', :lib => false

В test_helper .rb, добавить require 'test / unit' , сразу после require 'test_help'

Это выглядит так:

require 'test_help'
require 'test/unit'

Если вы получите эту ошибку: % ': требуется один хэш (ArgumentError) , обновить гем i18n до версии 0.3.6.

3
ответ дан 2 December 2019 в 05:28
поделиться

Очевидно, это происходит из-за использования Test :: Unit 2.0 со старым Test :: Unit. По словам Кохей Суто на RubyForge, это можно исправить , вызвав gem 'test-unit' до того, как потребует 'test / unit' .

5
ответ дан 2 December 2019 в 05:28
поделиться

Как видно из этой ссылки http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50 это может произойти из-за предварительной инициализации mocha lib. Чтобы этого не случилось, рекомендуется добавить строку

config.gem 'test-unit', :lib => 'test/unit'

в config / environment.rb

3
ответ дан 2 December 2019 в 05:28
поделиться

Я получал это без установленного мокко или следует.

В этом сообщении предполагается, что это связано с несовместимостью в test-unit> = 2.0 , который я установил как зависимость для гемов systools. У меня сработал переход на 1.2.3, также может потребоваться простое требование.

1
ответ дан 2 December 2019 в 05:28
поделиться

У меня такая же проблема. Ничего вышеупомянутого у меня не сработало, кроме понижения тестовой единицы до 1.2.3 Мне не хватает окраски тестового модуля 2.x

1
ответ дан 2 December 2019 в 05:28
поделиться

Нашел (уродливое) решение:

gem 'unit / test' должен вызывается и внутри тестов, а не только в Rakefile .

1
ответ дан 2 December 2019 в 05:28
поделиться

Я столкнулся с этим сегодня на Mac OS X 10.6. Мое решение таково:

config.gem 'test-unit', :lib => 'test/unit', :version => '1.2.3'
config.gem 'autotest'
config.gem 'cucumber'
config.gem 'cucumber-rails', :lib => false
config.gem 'ffaker', :lib => 'faker'
config.gem 'rspec', :lib => false, :version => '>= 1.2.0'
config.gem 'rspec-rails', :lib => false, :version => '>= 1.2.0'
config.gem 'selenium-client', :lib => 'selenium'
config.gem "thoughtbot-factory_girl", :lib => 'factory_girl', :source => "http://gems.github.com"
config.gem 'thoughtbot-shoulda', :lib => 'shoulda'
config.gem 'webrat'
config.gem 'ZenTest', :lib => 'zentest'
1
ответ дан 2 December 2019 в 05:28
поделиться

Как и в комментарии aronchick, для меня (OS X 10.6) решение было

sudo gem uninstall test-unit

все версии.

1
ответ дан 2 December 2019 в 05:28
поделиться

Если вы добавите следующую строку в свой environment.rb или в config / environment / test.rb, это должно решить проблему

config.gem "test-unit", :lib => "test/unit", :version => ">=2.0.9", :env => "test"

Я полагаю, вам нужно будет добавить его перед строкой mocha, если вы используете mocha.

0
ответ дан 2 December 2019 в 05:28
поделиться

Вы заставите auto_test снова работать с помощью чего-то вроде

RUBY="ruby  -I.:lib:test -rubygems -e 'gem \"test-unit\"'" autotest
1
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: