ume

ファクトリとフィクスチャートとは

#対象者

目次

  1. factory botとfixtureとは.

  2. 2つの比較.

  3. まとめ

fixtureとfactory botとは.

⇨どちらもテスト用のデータベースに入れるサンプルデータ.
どんな時に使う?.
⇨ユーザーの基本情報(名前、メールアドレス、パスワードなど)にちゃんとバリデーションをかけてからデータベースに登録されているかをテストしたいときに使う。

例えば Twitterのようなアプリがあるとする。 サービスを利用するまでに基本情報の登録が必要。 ↓ 各項目が記入された状態でデータベースに登録されているかをテストしたい時、毎回手作業で↓のように入力して登録できたか確認するのはめんどくさい.
Name 後藤武.
Email hogehoge@yahoo.co.jp.
Password hoge1234.
Confirmation hoge1234.

そういう時に便利なのが.
⇨fixtureとfactory botというサンプルデータ. fixtureでは

one: ⇦サンプルデータの名前
 name: 後藤武.  
 email:  hogehoge@yahoo.co.jp.  
 password: hoge1234.  
 confirmation: hoge1234

↑のサンプルデータを使いたい時

users(:one)

factory botでは

FactoryBot.define do 
 factory :user do
    name { "後藤武" }
    email { "hogehoge@yahoo.co.jp." }
    password { "hoge1234" }
 end 
end 

こんな感じでかく 使いたい時は

FactoryBot.build(:user)

これで毎回自分でサンプルデータを作らなくても FactoryBot.build(:user)かusers(:one)をするだけでサンプルデータを作成できるのでテストがしやすくなる

2つの比較.

フィクスチャーのメリット.
①比較的早い.
Railsデフォルト機能のため環境をセットアップする必要がない。

デメリット.
Rspecで使う場合は外部ファイルにデータが記述されるので別ファイルの内容をテスト時に覚えておかないといけない.

②データを取り込む際にActiveRecordを使わないのでモデルのバリデーション等の機能のテストを行えない.

③データが脆いため保守に時間をかけないといけなくなる。