アウトプットを頑張る

初めてのプログラミング学習期間中の記録と、日頃読んでいる本をメモのアウトプットをがんばります。

【プログラミング学習】Rspec 効率的なテストコードの記述

■プログラミング学習 f:id:yuma6128:20210821202045j:plain

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)