#はじめに
FakerはFactoryBotでのみ使えるものだと勝手に思っていたけど、RSpecでモデルの単体テストコードを記述するファイルでも使うことができることに気づき、新たに学んだことを記録しておきます。
##Faker
数字をランダムに生成する記述。
基本的な使い方としては、
Faker::Number.between(from: 5, to: 11) #5以上11以下をランダム生成
条件を減らすこともできます。
Faker::Number.between(from: 11) #11以上をランダム生成
between
ってあるけど、to:
を付けなければ、最高値を設けずに値を生成できる。
逆に、
Faker::Number.between(to: 11) #11以下をランダム生成
from:
をto:
にすれば、最高値のみを設けて値を生成できる。
###具体的な使い方
####目的
学年を入力する欄で8以上が入力出来ないようになっているかを確認するコードです。
####テストコード
before do
@class_room = FactoryBot.build(:class_room)
end
it '学年が8以上では登録できないこと' do
@class_room.grade = Faker::Number.between(from: 8) #確かめたい部分を上書き
@class_room.valid?
expect(@class_room.errors.full_messages).to include("学年は一覧にありません")
end
##最後に
Railsが便利にRubyを使えるようにしてくれているから、「なぜそうなるのか」ブラックボックスになっていることがたくさんあることに日々気づかされるばかりです。今回でいうと、FakerはFactoryBot内だけだと、思い込んでしました。