[!NOTE] アーカイブされたプロジェクト: Machinistは2013年以降開発が終了しています。最新のRuby on Railsテストにおけるテストデータ作成には、FactoryBot の利用を推奨します。
Machinistは、モデルのブループリントを定義してオンデマンドで有効なテストインスタンスを生成できるRuby向けのフィクスチャ代替ライブラリです。
インストール
Gemfile に追加:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
bundle とジェネレータを実行:
bundle install
rails generate machinist:install
ブループリントの定義
一意性を保証するためにシリアル番号(sn)を使用してデフォルトプロパティを定義:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# 名前付きバリアントブループリント
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
テスト内でのオブジェクト生成
# DB保存を行わずメモリ上に構築
user = User.make
# 構築してデータベースへ保存
user = User.make!
# ブループリント属性を上書き
user = User.make!(name: "David")
# 名前付きブループリントを使用
admin = User.make!(:admin)
関連付け (Associations)
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # belongs_to 関連
comments(3) # has_many 関連(3件生成)
author # 自動検出して User.blueprint を呼び出し
end