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