[!NOTE] Proiect arhivat: Machinist a fost întrerupt din 2013. Pentru date de testare moderne în Ruby on Rails, luați în considerare utilizarea FactoryBot.
Machinist este o bibliotecă de înlocuire a fixture-urilor pentru Ruby care permite definirea de blueprints pentru a genera instantaneu instanțe valide de testare.
Instalare
Adăugați în fișierul Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Rulați bundle și generatorul de instalare:
bundle install
rails generate machinist:install
Definirea Blueprint-urilor
Definiți proprietățile implicite folosind numere seriale (sn) pentru a garanta unicitatea:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Variantă numită de blueprint
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Construirea obiectelor în teste
# Construire în memorie fără salvare
user = User.make
# Construire și persistență în baza de date
user = User.make!
# Suprascrierea atributelor din blueprint
user = User.make!(name: "David")
# Utilizarea unui blueprint numit
admin = User.make!(:admin)
Asocieri (Associations)
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Asociere belongs-to
comments(3) # Asociere has-many (generează 3 elemente)
author # Detectează automat și apelează User.blueprint
end