Как запустить консоль Rails в тестовой среде и помощнике нагрузочного теста.РБ?

фон: у меня возникли проблемы с драгоценным камнем Thoughtbot "Factory Girl", который используется для создания объектов для использования в единицах и других тестах. Я бы хотел пойти к консоли и запустить разные звонки заводских девушек, чтобы проверить, что происходит. Например, я хотел бы пойти туда...

>> Factory(:user).inspect

Я знаю, что вы можете запускать консоль в различных средах...

$ script / console RAILS_ENV=test

но когда я это делаю, Заводского класса нет доступный. Похоже, что 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. Аргх.

8 ответов


Рельсы

Run script/console --help. Вы заметите, что синтаксис script/console [environment], который в вашем случае составляет script/console test.

Я не уверен, что вам нужен помощник теста или если тестовая среда делает это за вас, но с этой командой вы, по крайней мере, сможете успешно загрузиться в тестовый env.

как sidenote: действительно странно, что различные двоичные файлы в скрипте / имеют разные способы установки рельсов окружающая среда.

для рельсов 3 и 4

Run rails c test. Prepend bundle exec если вам это нужно для текущей среды приложения.


в Rails 3, просто сделайте rails console test или rails console production или rails console development (по умолчанию).


script/console test

должно быть все, что вам нужно.


Дэвид Смит прав, просто сделайте

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.

Это [среда]


можно указать среду, в которой должна работать консольная команда.

rails c [environment]

примеры

1) Для Постановки

rails c staging

2) Для Производства

rails c production

для источника и подробное описание:Командная Строка Rails


убедитесь, что вы установили драгоценный камень и добавили следующую строку либо в вашей среде.или тест РБ.файл rb.

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"

Я разделяю боль спрашивающего. Здесь действительно есть три отдельных вопроса, некоторые из которых адресованы, некоторые нет:

  1. как запустить консоль в тестовой среде?

    для последних версий Rails,bundle exec rails c test, или альтернативные синтаксисы для этого.

  2. как вы гарантируете, что test / test_helper.rb загружается в этот консольный сеанс?

    что-то вроде require './test/test_helper' должен это сделать.

    для меня, это возвращает true, указывая, что он уже не был загружен, когда я запустил консоль. Если это утверждение возвращает false, то вы просто потратили несколько нажатий клавиш, но вы все еще хорошо идти.

  3. как только test_helper загружен, как вы вызываете методы, определенные в нем?

    в типичном test_helper пользовательские методы обычно определяются как методы экземпляра ActiveSupport:: TestCase. Поэтому, если вы хотите позвонить одному из них, вам нужен экземпляр этого класс. Методом проб и ошибок ActiveSupport:: TestCase.new имеет один обязательный параметр, поэтому...передать это нечто.

    Если ваш test_helper имеет метод create_user, вы можете вызвать его таким образом: ActiveSupport::TestCase.new("no idea what this is for").create_user


Тест Env

rails console test # or just rails c test

Развитие Env

rails console # or just rails c