Ich habe den Testcode mit einem Juwel namens Rspec implementiert. Dieses Mal haben wir das Verhalten des normalen Systems und des abnormalen Systems für den Unit-Test-Code der Benutzerregistrierungsfunktion bestätigt.
1 Installation der erforderlichen Edelsteine 2 FactoryBot-Beschreibung 3 Testcode schreiben
Fügen Sie in ** Gruppe Folgendes hinzu: Entwicklung,: Test ** der Gem-Datei. Führen Sie dann die Bundle-Installation aus.
gemfile
gem 'pry-rails'
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker'
Erstellen Sie als Nächstes ein Verzeichnis zum Schreiben von Rspec.
rails g rpsec:install
Bei der Ausführung werden das Verzeichnis und die Datei wie unten gezeigt generiert.
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
Beschreibt das Überprüfen des Ergebnisses des Testcodes auf dem Terminal.
.rspec
--format documentation
FactoryBot ist ein Juwel, das Instanzen zusammenhalten kann. Erstellen Sie ein Fabrikverzeichnis im Spezifikationsverzeichnis und erstellen Sie eine user.rb-Datei darin. Bearbeiten Sie user.rb wie folgt.
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 ist ein Juwel, das zufällige Werte erzeugt.
Bearbeiten Sie spec / models / user_spec.rb wie folgt.
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 'Neue Benutzerregistrierung' do
context 'Wenn die Neuregistrierung erfolgreich ist' do
it 'Spitzname und E-Mail, Passwort und Passwort_Wenn eine Bestätigung vorliegt, können Sie sich registrieren' do
expect(@user).to be_valid
end
it 'Sie können sich registrieren, wenn Ihr Passwort aus 6 Zeichen oder mehr besteht' do
@user.password = '123456'
@user.password_confirmation = '123456'
expect(@user).to be_valid
end
end
context 'Wenn die Neuanmeldung nicht gut geht' do
it 'Kann nicht registriert werden, wenn der Spitzname leer ist' do
@user.nickname = nil
@user.valid?
expect(@user.errors.full_messages).to include('Bitte geben Sie einen Spitznamen ein')
end
it 'Kann nicht registriert werden, wenn die E-Mail leer ist' do
@user.email = nil
@user.valid?
expect(@user.errors.full_messages).to include('Bitte geben Sie ihre E-Mail-Adresse ein')
end
it 'Kann nicht registriert werden, wenn doppelte E-Mails vorhanden sind' do
@user.save
another_user = FactoryBot.build(:user, email: @user.email)
another_user.valid?
expect(another_user.errors.full_messages).to include('E-Mail ist bereits vorhanden')
end
it 'Kann nicht registriert werden, wenn das Passwort leer ist' do
@user.password = nil
@user.valid?
expect(@user.errors.full_messages).to include('Bitte geben Sie Ihr Passwort ein')
end
it 'Passwort auch wenn Passwort existiert_Die Bestätigung kann nicht registriert werden, wenn sie leer ist' do
@user.password_confirmation = ''
@user.valid?
expect(@user.errors.full_messages).to include('Passwort (zur Bestätigung) und Passworteingabe stimmen nicht überein')
end
it 'Kann nicht registriert werden, wenn das Passwort 5 Zeichen oder weniger enthält' do
@user.password = '12345'
@user.password_confirmation = '12345'
@user.valid?
expect(@user.errors.full_messages).to include('Bitte geben Sie das Passwort mit mindestens 6 Zeichen ein')
end
end
end
end
end
Führen Sie den Testcode mit dem folgenden Befehl aus.
bundle exec rspec spec/models/user_spec.rb
Dieses Mal wird die Fehlermeldung auf Japanisch geschrieben, da'rails-i18n' verwendet wird. Durch die Verwendung eines Edelsteins namens Pry-Rails wird die Ausführung des Testcodes auf halbem Weg gestoppt und die Fehlermeldung bestätigt.
https://github.com/rspec/rspec-rails https://github.com/faker-ruby/faker
Recommended Posts