2017年10月24日

プログラミング

factory_girlがfactory_botに名前変更!使用方法の解説など

目次

  1. はじめに
  2. factory_botの使い方
  3. まとめ

はじめに

factory_girlはRubyでテストデータを生成するのに有名なプラグインでした。
日本時間で10/22ですかね、factory_girlがfactory_botにリネームされたようです。

ここでは深い話はしませんが、様々な考慮が必要なのでネーミングって難しいですね。

factory_girl改めてfactory_girlを使用することで、Rspecなどでテストデータ生成を便利にすることができます。
Test::Unitでも可能ですが、今回はRSpecでの使用手順をお伝えします。

factory_botの使い方

Gemのインストール

まずはGemfileにgemを指定して bundle install します。

group :development, :test do
  gem "factory_bot_rails", "~> 4.0"
end

factory_botの設定

また spec/support/factory_bot.rb に設定します。

RSpec.configure do |config|
  config.include FactoryBot::Syntax::Methods
end

POINT!!

既にfactory_girlが入っている場合、spec/support/factory_girl.rb上に config.include FactoryGirl::Syntax::Methods となっているはずです。
また、bundle updateをした際に挙動がおかしくなるようなのでご注意ください。

準備はこれで完了です。

テストデータの定義

例えばusers.rbというモデルがあった場合、このようにfactories配下に定義を書くことができます。
spec/factories/users.rb

FactoryBot.define do
  factory :user do
    first_name "Taro"
    last_name "Yamada"
    admin false
  end
end

テストデータを使ってみよう

使い方は至ってシンプルです。
user = build(:user)
user.first_name にTaro 、 last_name にYamadaが入っているデータが作られます。
ちなみにbuildなので保存されない挙動となります。
このようにcreateすることでテストユーザーデータが保存されます。
user = create(:user)

また、定義したデータを上書きしたいケースにはこのように対応します。
user = build(:user, first_name: “Takashi”)

そして大量にデータを作りたいケースなどもあるかと思います。
閾値を試したいケースなどですね。
そんなときはこのように、create_list の引数に繰り返し数を持たせることで一気にデータ作成が可能です。
created_users = create_list(:user, 25)

まとめ

factory_girl 改め、factory_bot を使用することでテストデータの作成をより便利にすることができます。
既に factory_girl が入っているまた、一旦アンインストールして再度 factory_bot をインストールしたほうが良いでしょう。
詳細はこちらの Issueをご覧ください。

また今回RSpec自体の説明は割愛しましたが、今後RSpecについても詳細の説明をしていきます。

2

1

AUTHOR

eishis

Eishi Saito 総務

SIerやスタートアップ、フリーランスを経て2016年11月にeishis, Inc.を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。

アプリでもっと便利に!気になる記事をチェック!

記事のお気に入り登録やランキングが表示される昨日に対応!毎日の情報収集や調べ物にもっと身近なメディアになりました。

eishisでは一緒に働く仲間を募集しています

正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。

話を聞いてみたい

運営メンバー

eishis

Eishi Saito 総務

SIerやスタートアップ、フリーランスを経て2016年11月にeishis, Inc.を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。

sasakki デザイナー

アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。

しまだ

しまだ デザイナー

WebAR/VRのデザインと3DCG制作がメインです。 肩書きは「アニメ案件に関わりたいデザイナー」。

Miu マーケター

ドイツでWEBマーケティングしています。

しんのき エンジニア

新しい技術が好きなWebエンジニアです。 元々インフラやPHPをやっていたのですが、最近はReact NativeとFirebaseを使って頑張ってます。

yamakawa

やまかわたかし デザイナー

フロントエンドデザイナー。デザイン・HTML/CSSマークアップ・JSアニメーション実装を担当しています。

furuya エンジニア

サーバーサイド、フロントエンド、Unityと色々手を出してる雑食系エンジニア。ReactNativeが最近のマイブーム。

Sayaka Osanai デザイナー

Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。

はらた

はらた エンジニア

サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

うえまつゆい エンジニア

サーバーサイドエンジニアからフロントエンドエンジニアになりました。主にReact Nativeでのアプリ開発をしています。

CONTACT PAGE TOP