Предыстория: у меня возникли проблемы с гемом Thoughtbot "Factory Girl", который используется для создания объектов для использования в модульных и других тестах. Я хотел бы перейти к консоли и запустить разные вызовы Factory Girl, чтобы проверить, что происходит. Например, я бы хотел пойти туда, где ...
>> Factory(:user).inspect
Я знаю, что вы можете запускать консоль в разных средах ...
$ script / console RAILS_ENV = тест
Но когда я это делаю, класс 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.
Ответы:
Для Rails <3.0
Беги
script/console --help
. Вы заметите, что синтаксис такойscript/console [environment]
, как в вашем случаеscript/console test
.Я не уверен, нужен ли вам помощник по тестированию или тестовая среда делает это за вас, но с помощью этой команды вы, по крайней мере, сможете успешно загрузиться в тестовую среду.
В качестве примечания: действительно странно, что различные двоичные файлы в script / имеют разные способы настройки среды rails.
Для рельсов 3 и 4
Беги
rails c test
. Подготовьте,bundle exec
если вам это нужно для текущей среды приложения.Для Rails 5 и 6
Беги
rails console -e test
.источник
rails console [environment]
rails server -e test
features/support/helpers.rb
не загружались автоматически. Кроме того,Rack::Test
не загружается.В Rails 3 просто выполните
rails console test
илиrails console production
илиrails console development
(по умолчанию).источник
Должно быть все, что вам нужно.
источник
Для Rails 5.2.0: «Передача имени среды в качестве обычного аргумента устарела и будет удалена в следующей версии Rails. Пожалуйста, используйте вместо этого параметр -e».
источник
Вы можете указать среду, в которой должна работать консольная команда.
Примеры
1) Для постановки
2) Для производства
Источник и подробное описание: Командная строка Rails
источник
Дэвид Смит прав, просто сделай
Команда помощи покажет, почему это работает:
Это бит [окружающая среда] .
источник
Я разделяю боль спрашивающего. Здесь действительно есть три отдельных вопроса, некоторые из которых рассматриваются, а некоторые нет:
Как запустить консоль в тестовой среде?
Для последних версий 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
источник
:random
по умолчаниюinitialize
метод. Но похоже, что ожидаемый параметр сохраняется как@NAME
в созданном объекте.Убедитесь, что вы установили GEM и добавили следующую строку в файл environment.rb или test.rb.
источник
Тестовая среда
Env разработки
источник
Команда для запуска тестовой среды консоли rails:
или
если вы столкнулись с проблемой, например
тогда вы должны сначала подготовить свою тестовую БД, запустив
источник