クイックリファレンス

Machinist チートシート

Machinistのクイックリファレンス:Rubyのフィクスチャ代替ライブラリ、ブループリント定義、オブジェクト生成、モデルの関連付け。

· 公開日

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

参考資料

関連テーマ