[!NOTE] Progetto archiviato: Machinist è stato dismesso dal 2013. Per i test moderni in Ruby on Rails, valuta l'uso di FactoryBot.
Machinist è una libreria di sostituzione delle fixture per Ruby che consente di definire blueprint di modelli per generare al volo istanze di test valide.
Installazione
Aggiungi al tuo Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Esegui bundle e il generatore di installazione:
bundle install
rails generate machinist:install
Definizione dei Blueprint
Definisci le proprietà predefinite utilizzando numeri di serie (sn) per garantire l'univocità:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Variante di blueprint con nome
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Creazione di oggetti nei test
# Costruisci in memoria senza salvare
user = User.make
# Costruisci e salva nel database
user = User.make!
# Sovrascrivi gli attributi del blueprint
user = User.make!(name: "David")
# Usa un blueprint con nome
admin = User.make!(:admin)
Associazioni
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Associazione belongs-to
comments(3) # Associazione has-many (genera 3 elementi)
author # Rileva automaticamente e invoca User.blueprint
end