Szybka pomoc

Ściągawka z Machinist

Szybki przewodnik po bibliotece Machinist: zamiennik fixtures w Ruby, blueprints, instancjonowanie obiektów i relacje modeli.

· Opublikowano

[!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

Materiały referencyjne

Powiązane tematy