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についても詳細の説明をしていきます。

Ruby on Railsのお仕事に関するご相談

Bageleeの運営会社、palanではRuby on Railsに関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。

無料相談フォームへ

3

4

AUTHOR

eishis

Eishi Saito 総務

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

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

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

簡単に自分で作れるWebAR

「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。

palanARへ
palanar

palanはWebARの開発を
行っています

弊社では企画からサービスの公開終了まで一緒に関わらせていただきます。 企画からシステム開発、3DCG、デザインまで一貫して承ります。

webar_waterpark
CONTACT PAGE TOP