[RAILS] [Rspec] Flux de l'introduction de Rspec à l'écriture du code de test unitaire pour le modèle

Cette fois, j'écrirai la procédure d'introduction de Rspec lors de l'écriture du code de test au lieu d'un mémorandum.

Présentation de Gem

Présentez 3 types de gemmes utilisées dans le test. Décrivez dans le processus de groupe: développement,: test do ~ end.

Gemfile


group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails
  gem 'factory_bot_rails'
  gem 'faker'
end

Après avoir écrit, faites bundle install et redémarrez le serveur local.

Installez les fichiers requis pour Rspec

Terminal


% rails g rspec:install

Visualiser les journaux des résultats des tests

.rspec


--require spec_helper
--format documentation # =>Postscript

Définir le message d'erreur sur l'anglais (facultatif)

Définissez si vous souhaitez que le message d'erreur de test s'affiche en anglais. RSpec.configure do |config|Ajouté ci-dessus.

spec/rails_helper.rb


#Omission
I18n.locale = "en"

RSpec.configure do |config|
#Omission

Création de fichier FactoryBot

--Créez un répertoire usines dans le répertoire spec.

Générer des informations utilisateur avec FactoryBot

spec/factories/users.rb


FactoryBot.define do
  factory :user do
    name {Faker::Name}
    email {Faker::Internet.free_email}
    password = Faker::Internet.password(min_length: 6)
    password {password}
    password_confirmation {password}
  end
end

Confirmez que FactoryBot peut être généré

Terminal (console)


pry(main)> FactoryBot.create(:user)

Lorsqu'une erreur survient

`Terminal``


#Quittez la console avec exit

% spring stop

Préparez un fichier pour écrire le code de test

Terminal


% rails g rspec:model user

Description du code de test

J'écrirai de plus en plus du code de test comme celui-ci.

spec/models/user_spec.rb


require 'rails_helper'

RSpec.describe User, type: :model do
  pending "add some examples to (or delete) #{__FILE__}"# =>La description d'origine est supprimée

describe 'Enregistrement d'un nouvel utilisateur' do 
    before do
      @user = FactoryBot.build(:user)
    end

   it "name, email, password, password_Si toutes les confirmations sont saisies, elles seront enregistrées" do
      expect(@user).to be_valid
   end
   
  end
end

Lors de l'exécution du code de test

Exécutez le code suivant.

Terminal


% bundle exec rspec spec/models/user_spec.rb

Site de référence pour savoir comment écrire Faker

https://rubydoc.info/gems/faker/1.3.0/frames http://railscasts.com/episodes/126-populating-a-database https://github.com/takeyuweb/trygems/blob/master/try-faker/faker.md

Faker::Japanese https://github.com/tily/ruby-faker-japanese

Recommended Posts

[Rspec] Flux de l'introduction de Rspec à l'écriture du code de test unitaire pour le modèle
Après l'introduction de RSpec, jusqu'à ce que vous commenciez à écrire le code de test unitaire pour le modèle
[Rails] De la préparation du test au test unitaire du modèle [RSpec]
[Rails] Code de test unitaire pour le modèle utilisateur
Comment écrire un test unitaire pour Spring Boot 2
Un mémorandum pour écrire un beau code
[R Spec on Rails] Comment écrire du code de test pour les débutants par les débutants
Exemple de code pour le test unitaire d'un contrôleur Spring Boot avec MockMvc
Je veux écrire un test unitaire!
[Java] Flux du code source à l'exécution
Présentation de Rspec, un framework de test pour Ruby on Rails
[RSpec] J'ai écrit un test pour télécharger une image de profil.
Procédure de création du code de test unitaire RSpec (création de l'utilisateur de connexion Ver.)
Exécution du code de test RSpec
Que faire si vous obtenez une erreur «302» dans le code de test du contrôleur dans Rails
Je souhaite générer des informations de manière aléatoire lors de l'écriture du code de test
[Code de test d'intégration] Comment sélectionner un élément dans date_select
Introduction à Micronaut 2 ~ Test unitaire ~
Seulement ce dont je veux me souvenir, 4 modèles pour écrire des tests unitaires
Comment ouvrir un fichier de script à partir d'Ubuntu avec du code VS
Écrivons un code de test pour la fonction de connexion avec Spring Boot
J'ai testé comment utiliser le test / l'unité de Ruby et le code de Janken.
[Swift5] Comment communiquer de ViewController à Model et transmettre une valeur
Remarques sur la génération de données factices pour les mots de passe dans le code de test unitaire du modèle Rails