0
0

More than 3 years have passed since last update.

RubyOnRailsのモデル単体テストでPassword is invalidになったりならなかったりする。

Last updated at Posted at 2021-03-15

RubyOnRailsのモデル単体テストでPassword is invalidになったりならなかったりしたので原因と対処法をめも。

■状況①
ユーザ情報とクレジットカード情報を入力したら商品を購入できる機能があり、モデルの単体テストを実行している。

■状況②
とあるユーザでログインしていないと商品を購入できないので、ユーザをFactoryBotとFakerで作成してログインさせる。

■状況③
単体テストコードを実行すると、ログイン状態で行われるexampleが成功したりしなかったりする。
失敗の場合、ターミナルにはFactoryBotでユーザ作成時にパスワードがおかしいぜと表示される。(下記スクショ参照)

035d070d63ce1697e785727aeeb9b38d.png

■原因
Fakerにて生成されたパスワードが、ユーザモデルのパスワードのバリデーションを満たしていなかった。

■バリデーション
・半角6文字以上が必須
・英数混合が必須

■修正したこと
password { Internet.password(min_length: 6) }

password { 'T1' + Faker::Internet.password(min_length: 4) }

'T1'の部分で英数混合を担保しつつ、残りの4文字はFakerでランダム生成するようにしました。
6文字すべてをFakerで生成するとすべて英字もしくは全て数字のパスワードが生成され、要件を満たされていなかった、ということでした。

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