#概要
RSpecでモデルの単体テストを行う際に英数字混合のpasswordをFactoryBotでどのようにしてダミーデータを作成するか、考案に時間が掛かった為備忘録として書き留めておきます。
実装したいpasswordの条件
- 6文字以上であること
- 英数字混合であること
設定したvalidation
models/user.rb
validates :password, format: { with: /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]+\z/i }
最初に設定したFactorybot
spec/factories/users.rb
factory :user do
password {Faker::Internet.password(min_length: 6)}
結果
このダミーデータでも単体テストは成功するが、まれに失敗します。
特に縛りがないパスワードの為、まれに整数のみになってしまうからです。
#結論
Factorybotを下記のように修正することで整数のみになることを防ぎました。
spec/factories/users.rb
factory :user do
password {'1a' + Faker::Internet.password(min_length: 4)}
#最後に
自分のような初学者の方で、ダミーデータ作成時のひとつの例として参考になれば幸いです。