[!NOTE] Arkiverat projekt: Machinist har lagts ned sedan 2013. För moderna testdata i Ruby on Rails bör du överväga att använda FactoryBot.
Machinist är ett bibliotek för ersättning av testfixturer i Ruby som gör det möjligt att definiera modell-blueprints för att snabbt generera giltiga testinstanser.
Installation
Lägg till i din Gemfile:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
Kör bundle och installationsgeneratorn:
bundle install
rails generate machinist:install
Definiera Blueprints
Definiera standardattribut med serienummer (sn) för att garantera unikhet:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# Namngiven blueprint-variant
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
Bygga objekt i tester
# Bygg i minnet utan att spara
user = User.make
# Bygg och spara i databasen
user = User.make!
# Åsidosätt blueprint-attribut
user = User.make!(name: "David")
# Använd en namngiven blueprint
admin = User.make!(:admin)
Associationer
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # Belongs-to-association
comments(3) # Has-many-association (genererar 3 poster)
author # Upptäcker och anropar User.blueprint automatiskt
end