テストコードを書くときに、ランダムで情報を生成したい
【概要】
1.結論
2.導入方法
3.ニックネーム,email,パスワードの書き方
4.別の書き方
補足:日付/苗字・名前(漢字とカタカナ)の書き方
1.結論
gem”faker"をgemfileに記載し、bundle installする。
そして、specフォルダにfactoriesフォルダを作り記載したいファイルを作ってプログラミングする。
2.導入方法
※ここではgem"rspec-rails",gem"factory_bot_rails"の導入の話は割愛します!その2つをbundle installしている前提でお話しします。"Rspec","FactoryBot"の記事を投稿した場合はこちらにもリンクを貼らせていただきます!
手順❶
group :development, :test do
end
の中に
gem 'faker'
を記載。
手順❷
%bundle install
ターミナルでこのように記述します。
手順❸
specフォルダにfactoriesフォルダを生成し、
任意のファイルを作成。(Rubyであれば"モデル名.rb")
手順❹
FactoryBot.define do
factory :user do
------- ここより下に記載していきます------------
end
end
3.ニックネーム,emailの書き方
”----- ここより下に記載していきます--------”
の欄に
nickname { Faker::Name.name }
email { Faker::Internet.free_email }
と記載することでランダムに生成することができます!
nickname,emailはDBのカラムと同じ名前になります。
3.パスワードの書き方
password = Faker::Internet.password(min_length: 6)
password { password }
password_confirmation { password }
min_length:6はgem"devise"の本来備わっているバリデーションに合わせています。
また2度入力するための"確認用パスワード"も記載しています。
4.生成されているか確認する方法
ターミナルで
%rails c
とコンソールを開いてから
pry(main)>FactoryBot.create(:モデル名)
*pryなのはbinding.pryを導入しているためです。
下記のように入力するとニックネーム,emailの情報がランダムで生成されていることがわかります!
*パスワードはencrypted_passwordにより暗号化されます。
nickname: "Sen. Lou Schimmel", email: "[email protected]"
4.別の書き方
gem"faker"を導入しないパターンですと、
このように書くこともできます!
FactoryBot.define do
factory :user do
nickname {"taro"}
email {"[email protected]"}
end
end
補足.日付/苗字・名前(漢字とカタカナ)の書き方
結論から申しますと、
FactoryBot.define do
factory :user do
transient do
person { Gimei.name }
end
date { Faker::Date.backward }
first_name { person.first.kanji }
last_name { person.last.kanji }
first_name_kana { person.first.katakana }
last_name_kana { person.last.katakana }
end
end
このように書きます。
ただ注意して欲しい事が1点あります。
gem"faker"にはランダムで漢字やカタカナ(振り仮名)を生成することができないので別途gem"gimei"というものをgemfileに記載し、bandle installします。
そして
transient do
person { Gimei.name }
こうすることによりgemを自由に使用することができます。
実際に使用する際は
”person.”をいれて苗字と名前(”first”/”last”)で指定することができ、漢字とカタカナ(”kanji”/”katakana”)で指定できます。
Author And Source
この問題について(テストコードを書くときに、ランダムで情報を生成したい), 我々は、より多くの情報をここで見つけました https://qiita.com/taka_no_okapi/items/2cd78d3168b90e5c2534著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .