J'ai implémenté le code de test en utilisant un gem appelé Rspec. Cette fois, nous avons confirmé le comportement du système normal et du système anormal pour le code de test unitaire de la fonction d'enregistrement utilisateur.
1 Installation des gemmes requises 2 Description de FactoryBot 3 Écriture du code de test
Ajoutez ce qui suit dans ** group: development ,: test ** of the gemfile. Ensuite, exécutez l'installation du bundle.
gemfile
gem 'pry-rails'
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker'
Ensuite, créez un répertoire pour écrire Rspec.
rails g rpsec:install
Une fois exécutés, le répertoire et le fichier seront générés comme indiqué ci-dessous.
create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb
Décrit de vérifier le résultat du code de test sur le terminal.
.rspec
--format documentation
FactoryBot est un joyau qui peut contenir des instances ensemble. Créez un répertoire factories dans le répertoire spec et créez-y un fichier user.rb. Modifiez user.rb comme suit.
spec/factories/user.rb
FactoryBot.define do
  factory :user do
    nickname { Faker::Name.last_name }
    email { Faker::Internet.free_email }
    password = Faker::Internet.password(min_length: 6)
    password { password }
    password_confirmation { password }
  end
end
Faker est une gemme qui produit des valeurs aléatoires.
Modifiez spec / models / user_spec.rb comme suit.
spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, type: :model do
  describe User do
    before do
      @user = FactoryBot.build(:user)
    end
    describe 'Enregistrement d'un nouvel utilisateur' do
      context 'Lorsque la nouvelle inscription est réussie' do
        it 'pseudo et email, mot de passe et mot de passe_Si la confirmation existe, vous pouvez vous inscrire' do
          expect(@user).to be_valid
        end
        it 'Vous pouvez vous inscrire si votre mot de passe contient 6 caractères ou plus' do
          @user.password = '123456'
          @user.password_confirmation = '123456'
          expect(@user).to be_valid
        end
      end
      context 'Quand la nouvelle inscription ne se passe pas bien' do
        it 'Ne peut pas être enregistré si le pseudo est vide' do
          @user.nickname = nil
          @user.valid?
          expect(@user.errors.full_messages).to include('Veuillez saisir un pseudo')
        end
        it 'Impossible de s'inscrire si l'e-mail est vide' do
          @user.email = nil
          @user.valid?
          expect(@user.errors.full_messages).to include('Veuillez entrer votre email')
        end
        it 'Impossible de s'inscrire s'il y a des e-mails en double' do
          @user.save
          another_user = FactoryBot.build(:user, email: @user.email)
          another_user.valid?
          expect(another_user.errors.full_messages).to include('L'email existe déjà')
        end
        it 'Impossible de s'inscrire si le mot de passe est vide' do
          @user.password = nil
          @user.valid?
          expect(@user.errors.full_messages).to include('s'il vous plait entrez votre mot de passe')
        end
        it 'mot de passe même si le mot de passe existe_La confirmation ne peut pas être enregistrée si elle est vide' do
          @user.password_confirmation = ''
          @user.valid?
          expect(@user.errors.full_messages).to include('Le mot de passe (pour confirmation) et l'entrée du mot de passe ne correspondent pas')
        end
        it 'Impossible de s'inscrire si le mot de passe est de 5 caractères ou moins' do
          @user.password = '12345'
          @user.password_confirmation = '12345'
          @user.valid?
          expect(@user.errors.full_messages).to include('Veuillez saisir le mot de passe d'au moins 6 caractères')
        end
      end
    end
  end
end
Exécutez le code de test avec la commande suivante.
bundle exec rspec spec/models/user_spec.rb 
Cette fois, le message d'erreur est rédigé en japonais car «rail-i18n» est utilisé. En utilisant un gem appelé pry-rails, l'exécution du code de test est interrompue à mi-chemin et le message d'erreur est confirmé.
https://github.com/rspec/rspec-rails https://github.com/faker-ruby/faker
Recommended Posts