[!NOTE] Gearchiveerd project: Machinist is sinds 2013 stopgezet. Overweeg voor moderne Ruby on Rails-testfixtures FactoryBot.
Machinist is een fixture-vervangingsbibliotheek voor Ruby waarmee modelblauwdrukken kunnen worden gedefinieerd om dynamisch geldige testinstanties te genereren.
Installatie
Toevoegen aan je Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Voer bundle en de installatiegenerator uit:
bundle install
rails generate machinist:install
Blueprints definiëren
Definieer standaardeigenschappen met serienummers (sn) om uniciteit te garanderen:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Benoemde blueprint-variant
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Objecten bouwen in tests
# Bouwen in het geheugen zonder op te slaan
user = User.make
# Bouwen en opslaan in de database
user = User.make!
# Overschrijf blueprint-attributen
user = User.make!(name: "David")
# Gebruik een benoemde blueprint
admin = User.make!(:admin)
Associaties
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Belongs-to-associatie
comments(3) # Has-many-associatie (genereert 3 items)
author # Detecteert automatisch en roept User.blueprint aan
end