Краткий справочник

Шпаргалка по Machinist

Краткое справочное руководство по Machinist: библиотека замены фикстур для Ruby, чертежи (blueprints), инстанцирование объектов и связи.

· Опубликовано

[!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

Полезные ссылки

Связанные темы