[RUBY] Je souhaite générer des informations de manière aléatoire lors de l'écriture du code de test

【Aperçu】

1. Conclusion </ b>

2. Méthode d'installation </ b>

3. Comment écrire un pseudo, un e-mail, un mot de passe </ b>

4. Une autre façon d'écrire </ b>

Supplément: Comment écrire la date / le nom / le prénom (kanji et katakana) </ b>


1. Conclusion ---------------------------------------- Mettez gem "faker" dans gemfile et bundle install. Ensuite, créez un dossier facroies dans le dossier spec, créez le fichier que vous souhaitez décrire et programmez-le.
  1. Méthode d'installation

  • Je vais omettre l'introduction des gem "rspec-rails" et gem "factory_bot_rails" ici! Je vais parler des deux en supposant que vous avez une installation groupée. Si vous avez posté un article sur "Rspec", "FactoryBot", nous publierons également un lien ici!
    Étape ❶

dossier gemfile


group :development, :test do
end 

Dans

gem 'faker'

Décrit.


Étape ❷

Terminal


%bundle install 

Écrivez comme ça dans le terminal.


Procédure ❸ Créer un dossier usines dans le dossier spec Créez n'importe quel fichier. (Pour Ruby, "nom du modèle.rb")
Procédure ❹

factories/***.rb


FactoryBot.define do
  factory :user do
-------Je vais le décrire ci-dessous ici------------


 end
end

  1. Comment écrire un pseudo et un e-mail

”-----Je vais le décrire ci-dessous ici--------”

Dans la colonne de

factories/***.rb


nickname { Faker::Name.name }
email { Faker::Internet.free_email }

Vous pouvez le générer aléatoirement en écrivant! pseudo et e-mail ont le même nom que la colonne DB.


3. Comment écrire un mot de passe

factories/***.rb


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

min_length: 6 correspond à la validation inhérente de gem "devise". Il comprend également un «mot de passe de confirmation» à saisir deux fois.

  1. Comment vérifier s'il est généré

Au terminal

Terminal


%rails c

Et après avoir ouvert la console

console


pry(main)>FactoryBot.create(:Nom du modèle)
  • pry est parce que nous avons introduit binding.pry.

Si vous entrez ce qui suit, vous pouvez voir que le pseudo et les informations de courrier électronique sont générés de manière aléatoire!

  • Le mot de passe est chiffré par encrypted_password.

console


nickname: "Sen. Lou Schimmel", email: "[email protected]"


4. Une autre façon d'écrire

S'il s'agit d'un motif qui n'introduit pas de gemme "faker", Vous pouvez aussi écrire comme ça!

factories/***.rb


FactoryBot.define do
  factory :user do

  nickname              {"taro"}
  email                 {"[email protected]"}
end
end


Supplément. Comment écrire la date / le nom / le prénom (kanji et katakana)

De la conclusion,

factories/***.rb


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

Écrivez comme ça. Cependant, il y a une chose dont je voudrais que vous soyez conscient. Puisque les kanji et katakana (furi-kana) ne peuvent pas être générés aléatoirement dans gem "faker", écrivez séparément gem "gimei" dans le gemfile et effectuez l'installation de bandle.

Et

factories/***.rb


transient do
person { Gimei.name }

Cela vous donne la liberté d'utiliser la gemme.

Lors de l'utilisation réelle Mettez «personne». Peut être spécifié par nom et prénom («premier» / «nom»), Il peut être spécifié avec kanji et katakana ("kanji" / "katakana").

Recommended Posts