Подтвердить что ты не робот

Тесты Rails не могут найти test_helper

Я пытаюсь запустить отдельные тесты с помощью ruby ​​test/unit/mytest.rb, но всегда получаю ошибку "нет такого файла для загрузки - test_helper". Google представил несколько предложений, но никто из них не работал у меня. Я запускаю Rails 3.0, Ruby 1.9.2 (через RVM) на Ubuntu 10.10

Вот что я пробовал до сих пор - любые предложения действительно оценили

  • Изменено значение "require test_helper" для "require File.dirname(FILE) +" /../test_helper ""в test/unit/mytest_test.rb. Он возвращает" нет такого файла для загрузки - test/unit/../test_helper "
  • Протестировано rvm test/unit/mytest_test.rb То же, что указано выше
  • Пробовал работать ruby ​​-I test/unit/mytest_test.rb. Нет сообщений на терминал. Примерно через 5 минут, ожидая чего-то, ctrl + c'd из него

Любые предложения очень ценятся - я в тупике.

4b9b3361

Ответ 1

ruby ​​1.9.2 удалил ".", текущий каталог, из пути загрузки. Я должен сделать это, чтобы заставить его работать:

require 'test_helper'

и назовите его так:

ruby -I. unit/person_test.rb 

Ответ 2

В верхней части тестовых файлов добавлено следующее.

require File.expand_path("../../test_helper", __FILE__)

Это восстанавливает предыдущее поведение и позволяет простому вызову:

ruby test/unit/person_test.rb

Ответ 3

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

В моем случае это была ошибка Rakefile..

теперь он выглядит так:

require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new do |t|
  t.libs << "lib"
  t.libs << "test" # here is the test_helper
  t.pattern = "test/**/*_test.rb"
end

task default: :test

Я знаю его старый и имеет ответ, отмеченный принятым, но, возможно, это тоже поможет кому-то:) иметь хороший день

Ответ 4

Возможно, вам следует запустить тестовые примеры следующим образом:

$ rake test

Нет необходимости изменять инструкцию "require" из сгенерированного кода, если вы используете rake.

Протестировано с Ruby 1.9.3 и Rails 3.2.8

Ответ 5

Rails 1.9 больше не включает текущий каталог в LOAD_PATH, что вызывает эту проблему. У вас есть несколько вариантов.

  • вызовите тест с опцией -I из каталога приложения:

    ruby ​​-I test test/functional/test_foo.rb

и используйте запрос без пути:

require "test_helper.rb"
  • используйте полный путь в требовании. Либо

    требуется "путь"

    требуется Pathname.new(FILE). realpath.dirname.join('/../test_helper.rb')

или

require (File.dirname(File.realdirpath(__FILE__)) + '/../test_helper.rb')

Ответ 6

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