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

2

AUTHOR

eishis

Eishi Saito 総務

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

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

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

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

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

話を聞いてみたい

運営メンバー

eishis

Eishi Saito 総務

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

sasakki デザイナー

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

しまだ

しまだ デザイナー

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

Miu マーケター

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

しんのき エンジニア

主に React Native を使ったアプリ開発と AWS や Firebase を使ったサーバーレスアーキテクチャを担当しています。元々はインフラとかPHPをやっていました。

yamakawa

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

フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReact NativeやReact360をよく触っています。

furuya エンジニア

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

Sayaka Osanai デザイナー

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

はらた

はらた エンジニア

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

うえまつゆい エンジニア

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

kobori

こぼり ともろう エンジニア

サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。

sasai

ささい エンジニア

フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。

damien

Damien

WebAR/VRを中心に企画やディレクションやエンジニアもちょっとやっています。森に住んでいます。

デザイナーゲスト

ゲスト デザイナー

CONTACT PAGE TOP