0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FactoryBotについて

Posted at

#目次
①FactoryBotとは
②FactoryBot導入について
③FactoryBotのメリット

##①FactoryBotとは
ダミーのインスタンスを簡単に作成することができるテストツール。

##②FactoryBot導入について
factory_bot_railsというgemを使用する。
Gemfileのdevelopmentのtest環境にfactory_bot_railsを記述し、bundle installをする

Gemfile
 group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
end
ターミナル
 bundle install
ターミナル
 rails g factory_bot:model client
 #factoryディレクトリにclient.rbを作成する
spec/factories/client.rb
FactoryBot.define do
 factory :client do
   name                  {"careet_boy"}
   email                 {"niconico@gmail"}
   password              {"niconico"}
   password_confirmation {"niconico"}
  end
end

##③FactoryBotのメリット
結論としては、記述が楽になる。

spec/model/client_spec.rb
1 require 'rails_helper' 
2 describe Client do
3   describe 'クライエントの新規の登録' do 
4     it "nameが無ければクライントの登録はできない" do 
5       client = Client.new(name: "",email:"aaa@gmail",password:"11111",password_confirmation:"11111") 
6       client.valid? 
7       expect(client.errors.full_messages).to include("Name can't be blank") 
8     end
9   end
10 end

上記のコードがFactoryBotを使うことによって以下のように記述ができる

spec/model/client_spec.rb
1 require 'rails_helper' 
2 describe Client do
3   describe 'クライエントの新規の登録' do 
4     it "nameが無ければクライントの登録はできない" do 
5       client = FactoryBot.build(:client) #Clientのインスタンスを生成し
6       client.name = ""                   #nameを空にする
7       client.valid? 
8       expect(client.errors.full_messages).to include("Name can't be blank") 
9     end
10   end
11 end

補足:
FactoryBotのbuildとcrateの違い
・buildはデータが保存されない
・createはデータが保存される
データベースの値を利用するテストが必要な場合はcreateを使用する。
データベースにアクセスする必要がない場合は,buildを使用する。テストの実行速度を上げるため。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?