[!NOTE] Архивный проект: Поддержка Machinist была прекращена в 2013 году. Для создания тестовых данных в современном Ruby on Rails рекомендуется использовать FactoryBot.
Machinist — это библиотека замены фикстур для Ruby, которая позволяет определять чертежи (blueprints) моделей для быстрой генерации корректных тестовых объектов.
Установка
Добавьте в ваш Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Запустите bundle и генератор установки:
bundle install
rails generate machinist:install
Определение чертежей (Blueprints)
Задавайте свойства по умолчанию с помощью порядковых номеров (sn) для гарантии уникальности:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Именованный вариант чертежа
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Создание объектов в тестах
# Создание в памяти без сохранения в базе
user = User.make
# Создание с сохранением в базу данных
user = User.make!
# Переопределение атрибутов чертежа
user = User.make!(name: "David")
# Использование именованного чертежа
admin = User.make!(:admin)
Ассоциации (Связи)
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Связь belongs_to
comments(3) # Связь has_many (создает 3 записи)
author # Автоматически находит и вызывает User.blueprint
end