[!NOTE] Projekt zarchiwizowany: Machinist nie jest rozwijany od 2013 roku. W nowoczesnych testach Ruby on Rails zaleca się korzystanie z FactoryBot.
Machinist to biblioteka zastępująca fixtures w Ruby, która pozwala na definiowanie schematów (blueprints) w celu natychmiastowego generowania poprawnych instancji testowych.
Instalacja
Dodaj do pliku Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Uruchom bundle i generator instalatora:
bundle install
rails generate machinist:install
Definiowanie schematów (Blueprints)
Definiuj domyślne właściwości za pomocą numerów seryjnych (sn), aby zagwarantować unikalność:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Nazwany wariant blueprintu
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Budowanie obiektów w testach
# Tworzenie w pamięci bez zapisywania
user = User.make
# Tworzenie i zapisywanie do bazy danych
user = User.make!
# Nadpisywanie atrybutów blueprintu
user = User.make!(name: "David")
# Użycie nazwanego blueprintu
admin = User.make!(:admin)
Relacje (Associations)
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Relacja belongs_to
comments(3) # Relacja has_many (generuje 3 elementy)
author # Automatycznie wykrywa i wywołuje User.blueprint
end