[!NOTE] Proyecto Archivado: Machinist ha sido descontinuado desde 2013. Para pruebas modernas en Ruby on Rails, considera utilizar FactoryBot.
Machinist es una biblioteca de reemplazo de fixtures para Ruby que permite definir blueprints de modelos para generar instancias de prueba válidas al vuelo.
Instalación
Añade a tu Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Ejecuta bundle y el generador de instalación:
bundle install
rails generate machinist:install
Definición de Blueprints
Define propiedades predeterminadas utilizando números de serie (sn) para garantizar la unicidad:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Blueprint variante con nombre
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Construcción de Objetos en Pruebas
# Construir en memoria sin guardar
user = User.make
# Construir y persistir en la base de datos
user = User.make!
# Sobrescribir atributos del blueprint
user = User.make!(name: "David")
# Usar un blueprint con nombre
admin = User.make!(:admin)
Asociaciones
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Asociación belongs-to
comments(3) # Asociación has-many (genera 3 elementos)
author # Detecta automáticamente y llama a User.blueprint
end