Ruby factory_girlを使ってみた

Ruby on Rails用のfactory_girl_railsを使おうと思ったが、まずはfactory_girlを使って動きを確認してみようということで、次の内容に絞って紹介する。

 

また、factory_girl以外の技術はほとんど使用しないで済む内容になっている。
(railsもtest/unitもRSpecも使用していない、本当に基本だけで完結可能な内容)

準備

準備といっても、gemをインストールするだけ。

>gem install ‘factory_girl’

最もシンプルなサンプル

FactoryGirlの動きを体験するのに最適な、最もシンプルなサンプルを作成してみた。

 

サンプルの構成

factory_girl_sample
 |-test
 | |-factories
 |   |-factory.rb
 |
 |-sample.rb

 

ファクトリを定義

(test/factoriesフォルダにあればファイル名は何でもOK)

 

factory_girlを使ったサンプルプログラム

 

実行結果

>ruby sample.rb
John
Doe
false
{:first_name=>”John”, :last_name=>”Doe”, :admin=>false}

ファクトリで定義したデータからレコードを登録

先ほど紹介したサンプルは、ファクトリ定義からモデルインスタンスを作成してくれるだけだったが、FactoryGirl.createを使用すると、データベース登録まで行ってくれる。

といっても、実際には、FactoryGirl.buildする場合とFactoryGirl.createする場合との違いは、モデルオブジェクトに対してsave!メソッドが呼ばれるか呼ばれないかの違いしか無いようだ。

 

先ほどのsample.rbを少し修正してみた。

Userクラスにsave!メソッドを追加し、FactoryGirl.buildではなくFactoryGirl.createを使うようにした。

 

実行結果

>ruby sample.rb
save! メソッドが呼ばれました。

 

ここではsave!メソッドが呼び出されることの確認のみを行ったが、UserクラスがActiveRecord::Baseを継承していれば、save!メソッドが呼ばれた時にデータベースに保存される。

あとがき

冒頭でも紹介した通り、基本的な部分、導入的な部分についてのみ紹介した。

factory_girlにはこれ以外にも多くの機能が登録されており、網羅して紹介するのは難しい。

 

基本的な使い方について理解しさえすれば、factory_girl Getting Startedで紹介されている内容を理解しやすくなると思う。

 

魅力的な機能がたくさんあるので、是非とも使いこなしてほしい。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1432