неинициализированная константа Test :: Unit :: TestResult :: TestResultFailureSupport - PullRequest
2 голосов
/ 05 октября 2009

Я получаю ошибку в subj, когда пытаюсь запустить спецификации или генераторы в новом проекте rails.

Это происходит, когда я добавляю в смесь musta.

Я добавил следующее в config / environment.rb:

config.gem 'rspec', :version => '1.2.6', :lib => false
config.gem 'rspec-rails', :version => '1.2.6', :lib => false
config.gem "thoughtbot-shoulda", :version => "2.10.2", :lib => 'shoulda', :source => "http://gems.github.com"

Я на OSX.

  • ruby ​​1.8.6 (2008-08-11 patchlevel 287)
  • драгоценные камни 1.3.5
  • рельсы 2.3.4
  • rspec - 1.2.6
  • следует - 2.10.2
  • тестовый блок - 2.0.3

Мне известно о этом , и добавление config.gem 'test-unit', :lib => 'test/unit' действительно решает проблему genrator, так как она не выдает исключение, но в конце выполнения выдает 0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications, поэтому я полагаю, это пытается запустить тесты, что является неожиданным и нежелательным, также спецификации перестают работать вообще, кажется, что rspec вообще не работает, при запуске rake spec я снова получаю вывод test-unit (с 0 тестами, поскольку есть только спецификации тесты не определены)

Ответы [ 3 ]

1 голос
/ 14 мая 2010

Недавно я столкнулся с подобной проблемой и проследил ее до этого коммита в рубиновых числах:

http://github.com/vvs/rubygems/commit/cbb4b07d491dd49b8dff8ab7af706dde31307c7d

Который загружает гем 'test-unit', если он там, или беззвучно двигается, если его нет. Автор этого изменения, возможно, не знает фундаментальной истины - что активация драгоценного камня часто может изменить поведение других драгоценных камней, загруженных в систему. Разработчики приложений должны отвечать за определение набора драгоценных камней, которые они хотят активировать; то, что система rubygems сама решает по желанию загрузить драгоценный камень, является головным убором.

Другая половина этой проблемы - вопрос о том, почему гем test-unit мешает rspec. На это я не могу ответить, но я проследил это до того факта, что не было зарегистрировано ни одной группы ExampleGroups, что, в свою очередь, связано с тем, что «унаследованный» обратный вызов в ExampleGroupMethods не вызывается, когда Rspec динамически создает новый подкласс ActiveSupport: : TestCase (это происходит в подклассе ExampleGroupMethods #)

1 голос
/ 28 ноября 2010

Основываясь на разговоре, который я нашел здесь , похоже, проблема не в том, что RSpec умирает со всеми версиями тестового модуля, а в том, что он несовместим с более новыми. Таким образом, удаление тестового модуля в целом является одним из обходных путей. Но, если это не вариант для вас (как и для меня), вы можете установить более старую версию (например, 1.2.3) и просто убедиться, что она загружена до появления rspec.

Например, у меня есть это в моем файле environment / test.rb, и тесты снова запускаются:

config.gem 'test-unit'  , :lib => 'test/unit',  :version => '<2.0'
config.gem "rspec",       :lib => false, :version => '<2.0'
config.gem "rspec-rails", :lib => false, :version => '<2.0'
0 голосов
/ 05 октября 2009

test-unit на самом деле встроен в Ruby, поэтому удаление драгоценного камня связано со встроенной версией Ruby. Если вам не нужно что-то особенное, что не включено в стандартный тестовый модуль, я бы не стал слишком сильно беспокоиться об этом.

...