■プログラミング学習
◎FactoryBot
テストコードの記述では、ユーザーを生成する記述を下記のように都度記述をしました。
user = User.new(nickname:' ',email:'test@mail',password:'00',password_confirmation'00')
これらの同じような記述はまとめてしまったほうが効率的になります。
その時、使用するものがFactoryBotになります。
インスタンスをまとめることができるGemになります。
他のファイルで予め各クラスのインスタンスに定める値を設定しておき、各テストコードで使用できます。
◎FactoryBotの導入
GemFileの下記部分に記述を追記いたします
Gemfile group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console #省略 gem 'factory_bot_rails' end
を記述後、bundle installを実行する。
FactoryBotの記述を格納するディレクトリ「factories」とUserモデルに対するFactoryBotのファイルをusers.rbを作成する。
上記で作成した、users.rbに下記内容を記述する。
FactoryBot.define do factory :user do nickname {'test'} email {'test@example'} password {'000000'} password_confirmation {password} end end
この設定したインスタンスを生成するためには、「FactoryBot.build(:user)」という記述をテストコードの中に記述をする。
このbuildは、ActiveRecordのnewメソッドと同様の意味を持っています。
# FactoryBotを利用しない場合 user = User.new(nickname: 'test', email: 'test@example', password: '000000', password_confirmation: '00000000') #FactoryBotを利用する場合 user = FactoryBot.build(:user)