[!NOTE] Projeto Arquivado: O Machinist foi descontinuado desde 2013. Para fixtures de teste modernos em Ruby on Rails, considere usar o FactoryBot.
O Machinist é uma biblioteca que substitui fixtures no Ruby, permitindo definir blueprints de modelos para gerar instâncias de teste válidas rapidamente.
Instalação
Adicione ao seu Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Execute bundle e o gerador de instalação:
bundle install
rails generate machinist:install
Definição de Blueprints
Defina propriedades padrão usando números de série (sn) para garantir exclusividade:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Variante nomeada de blueprint
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Construindo Objetos em Testes
# Criar em memória sem salvar
user = User.make
# Criar e persistir no banco de dados
user = User.make!
# Sobrescrever atributos do blueprint
user = User.make!(name: "David")
# Usar um blueprint nomeado
admin = User.make!(:admin)
Associações
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Associação belongs-to
comments(3) # Associação has-many (gera 3 itens)
author # Detecta e chama User.blueprint automaticamente
end