Как запустить консоль Rails в тестовой среде и загрузить test_helper.rb?
Фон: у меня возникают проблемы с Thoughtbot "Factory Girl", который используется для создания объектов для использования в единичных и других тестах. Я хотел бы пойти на консоль и запустить разные призывы Factory Girl, чтобы проверить, что происходит. Например, я бы хотел пойти туда, чтобы сделать...
>> Factory(:user).inspect
Я знаю, что вы можете запускать консоль в разных средах...
$script/console RAILS_ENV = test
Но когда я это делаю, класс Factory недоступен. Похоже, что test_helper.rb
не загружается.
Я пробовал различные вызовы require
, включая один с абсолютным путем до test_helper.rb
, но они схожи с этим:
$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
Errno::ENOENT: No such file or directory -
/Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb
Grr. Argh.
Ответы
Ответ 1
Для рельсов & lt; 3,0
Запустите script/console --help
. Вы заметите, что синтаксис script/console [environment]
, который в вашем случае script/console test
.
Я не уверен, требуется ли вам помощник по тестированию или тестовая среда делает это за вас, но с помощью этой команды вы, по крайней мере, сможете успешно загрузиться в тестовую среду.
Как примечание: действительно странно, что различные двоичные файлы в скрипте/имеют разные способы настройки среды rails.
Для рельсов 3 и 4
Запустите rails c test
. Если вам это нужно для текущей среды приложения, добавьте bundle exec
.
Для рельсов 5 и 6
Запустите rails console -e test
.
Ответ 2
В Rails 3 просто выполните rails console test
или rails console production
или rails console development
(который по умолчанию).
Ответ 3
script/console test
Должно быть все, что вам нужно.
Ответ 4
Для Rails 5.2.0: "Передача имени среды в качестве обычного аргумента устарела и будет удалена в следующей версии Rails. Вместо этого используйте параметр -e".
rails c -e test
Ответ 5
Вы можете указать среду, в которой должна работать консольная команда.
rails c [environment]
Примеры
1) Для постановки
rails c staging
2) Для производства
rails c production
Для исходного и подробного описания: Командная строка Rails
Ответ 6
Дэвид Смит прав, просто сделай
script/console test
Команда help покажет, почему это работает:
$ script/console -h
Usage: console [environment] [options]
-s, --sandbox Rollback database modifications on exit.
--irb=[irb] Invoke a different irb.
--debugger Enable ruby-debugging for the console.
Это бит [среда].
Ответ 7
Я разделяю боль от аскеров. Здесь действительно три отдельных вопроса, некоторые из которых адресованы, а некоторые нет:
-
Как запустить консоль в тестовой среде?
Для последних версий Rails bundle exec rails c test
или альтернативных синтаксисов для этого.
-
Как вы обеспечиваете загрузку test/test_helper.rb в этот сеанс консоли?
Что-то вроде require './test/test_helper'
должно это сделать.
Для меня это возвращает true, указывая, что он не был загружен, когда я начал консоль. Если этот оператор возвращает false, то вы просто потратили впустую несколько нажатий клавиш, но вам все равно хорошо.
-
После загрузки test_helper, как вы называете методы, определенные в нем?
В типичном test_helper пользовательские методы обычно определяются как методы экземпляра ActiveSupport:: TestCase. Поэтому, если вы хотите вызвать один из них, вам нужен экземпляр этого класса. В результате проб и ошибок ActiveSupport:: TestCase.new имеет один требуемый параметр, поэтому... передайте ему что-то.
Если ваш test_helper имеет метод, называемый create_user, вы можете вызвать его так:
ActiveSupport::TestCase.new("no idea what this is for").create_user
Ответ 8
Убедитесь, что вы установили GEM, и вы добавили следующую строку в файл environment.rb или test.rb.
config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"
Ответ 9
Проверка Env
rails console test # or just rails c test
Разработка Env
rails console # or just rails c
Ответ 10
Команда для запуска консольной тестовой среды rails:
rails c -e test
или
RAILS_ENV=test rails c
если вы столкнулись с проблемой что-то вроде
ActiveRecord::StatementInvalid:
Mysql2::Error: Table 'DB_test.users' does not exist: SHOW FULL FIELDS FROM 'users'
затем сначала подготовьте тестовую базу данных, запустив
bundle exec rake db:test:prepare