С этим методом можно передать в 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
Это может произойти, если модули объявлены в одном операторе, когда родительский модуль, в который они вложены, еще не загружен. Я не смотрел на код этих драгоценных камней, но подозреваю, что именно это и происходит. Решение Чака предполагает это. вызов 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, требующей исправления.
Вот рецепт для 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.
Очевидно, это происходит из-за использования Test :: Unit 2.0 со старым Test :: Unit. По словам Кохей Суто на RubyForge, это можно исправить , вызвав gem 'test-unit'
до того, как потребует 'test / unit'
.
Как видно из этой ссылки http://floehopper.lighthouseapp.com/projects/22289-mocha/tickets/50 это может произойти из-за предварительной инициализации mocha lib. Чтобы этого не случилось, рекомендуется добавить строку
config.gem 'test-unit', :lib => 'test/unit'
в config / environment.rb
Я получал это без установленного мокко или следует.
В этом сообщении предполагается, что это связано с несовместимостью в test-unit> = 2.0 , который я установил как зависимость для гемов systools. У меня сработал переход на 1.2.3, также может потребоваться простое требование.
У меня такая же проблема. Ничего вышеупомянутого у меня не сработало, кроме понижения тестовой единицы до 1.2.3 Мне не хватает окраски тестового модуля 2.x
Нашел (уродливое) решение:
gem 'unit / test'
должен вызывается и внутри тестов, а не только в Rakefile
.
Я столкнулся с этим сегодня на 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'
Как и в комментарии aronchick, для меня (OS X 10.6) решение было
sudo gem uninstall test-unit
все версии.
Если вы добавите следующую строку в свой environment.rb или в config / environment / test.rb, это должно решить проблему
config.gem "test-unit", :lib => "test/unit", :version => ">=2.0.9", :env => "test"
Я полагаю, вам нужно будет добавить его перед строкой mocha, если вы используете mocha.
Вы заставите auto_test снова работать с помощью чего-то вроде
RUBY="ruby -I.:lib:test -rubygems -e 'gem \"test-unit\"'" autotest