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

Как запустить консоль 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.

4b9b3361

Ответ 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