KATUUUNs blog

プログラミング学習で得た知識をアウトプットするためのブログです

学習32日目 商品購入機能のテストコードにPassword is invalid. Include both letters and numbersが出た

お疲れ様です。KATUUUNです。
中高と陸上部でした。
今日、オリンピックの競歩で日本人のメダルを見た時は感動しました。
f:id:KT34309349:20210805215701j:plain
今日はフリマアプリで商品購入機能を実装しました。
createアクションに関するエラー対処とテストコード記述に苦戦したためbinding.pryオタクになってしまいました。

今日も苦戦した箇所をアウトプットします。

・商品購入機能のモデル単体テストコードにPassword is invalid. Include both letters and numbersが出た

商品購入機能のテストコード内容は
住所、電話番号、クレジットカード情報のpresense trueや半角などの正規表現のモデル単体テストコードです。

そこにいきなり

ActiveRecord::RecordInvalid:
       Validation failed: Password is invalid. Include both letters and numbers

が現れたら驚きませんか?パニックになりました。

・結論
パスワードはuserモデルの単体テストコードにおいてFakerというgemでテストコードに用いる値をランダムに生成していました。

password    {Faker::Internet.password(min_length: 6)}

この記述だと生成されるランダムのパスワードは時には数字のみパスワードだったり、英字のみのパスワードだったりします。それが上記のエラーにつなっが模様

password    {"1a"+Faker::Internet.password(min_length: 6)}

こう記述することで英字と数字を最低1文字ずつ含めることができて解決です。