Как запустить консоль 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
команда 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"
Я разделяю боль спрашивающего. Здесь действительно есть три отдельных вопроса, некоторые из которых адресованы, некоторые нет:
-
как запустить консоль в тестовой среде?
для последних версий 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