[!NOTE] Archiviertes Projekt: Machinist wurde seit 2013 eingestellt. Für moderne Testdaten in Ruby on Rails sollten Sie FactoryBot in Betracht ziehen.
Machinist ist eine Fixture-Ersatzbibliothek für Ruby, mit der Sie Modell-Blueprints definieren können, um spontan gültige Testinstanzen zu erzeugen.
Installation
Zu Ihrem Gemfile hinzufügen:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Bundle und den Installationsgenerator ausführen:
bundle install
rails generate machinist:install
Blueprints definieren
Standardeigenschaften mithilfe von Seriennummern (sn) definieren, um Eindeutigkeit sicherzustellen:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Benannter Blueprint-Variante
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Objekte in Tests erstellen
# Im Speicher erstellen ohne zu speichern
user = User.make
# Erstellen und in der Datenbank speichern
user = User.make!
# Blueprint-Attribute überschreiben
user = User.make!(name: "David")
# Einen benannten Blueprint verwenden
admin = User.make!(:admin)
Assoziationen
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Belongs-to-Assoziation
comments(3) # Has-many-Assoziation (erzeugt 3 Einträge)
author # Erkennt und ruft User.blueprint automatisch auf
end