При включении gemfile factory_girl_rails в ваш dev и тестовые блоки в Gemfile, рельсы автоматически сгенерируют фабрики при создании ваших моделей.
Есть ли способ генерировать фабрики после того, как ваши модели были сгенерированы?
При включении gemfile factory_girl_rails в ваш dev и тестовые блоки в Gemfile, рельсы автоматически сгенерируют фабрики при создании ваших моделей.
Есть ли способ генерировать фабрики после того, как ваши модели были сгенерированы?
Опция --fixture-replacement
позволяет вам указывать рельсы, что нужно генерировать для создания тестовых данных. Вы можете установить это значение по умолчанию в вашем файле config/application.rb
, например:
config.generators do |g|
g.fixture_replacement :factory_girl
end
Во-первых, посмотрите исходный проект, чтобы узнать, как он был реализован:
После этого попытайтесь угадать, как это работает:
rails g factory_girl:model Car name speed:integer
Результат:
create test/factories/cars.rb
И содержимое:
# Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do
factory :car do
name "MyString"
speed 1
end
end
Помните, что когда вы используете рельсы g, вы всегда можете его отменить, с рельсами d
rails d factory_girl:model Car name speed:integer
У меня есть драгоценный камень для этого https://github.com/markburns/to_factory
Это не ответ, но поскольку я еще не могу прокомментировать: Я думаю, вы можете использовать это, чтобы решить часть своей проблемы. Вы можете использовать драгоценный камень, называемый schema_to_scaffold, для создания командной строки factory_girl: model. Он выводит:
rails generate factory_girl: пользователи модели fname: string lname: string bdate: date email: string encrypted_password: string
из вашего schema.rb или вашего переименованного schema.rb.
Некоторые хорошие ответы здесь, но другой вариант - использовать stepford. Для некоторых проектов, которые используют схемы с ограничениями внешнего ключа, методы deep_ * и т.д. Могут помочь, и это простой способ генерации заводов через командную строку.