[RUBY] [Rails] Unit-Testcode für das Benutzermodell

Einführung

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.

Inhaltsverzeichnis

1 Installation der erforderlichen Edelsteine 2 FactoryBot-Beschreibung 3 Testcode schreiben

1. Installation der erforderlichen Edelsteine

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.

Terminal
rails g rpsec:install

Bei der Ausführung werden das Verzeichnis und die Datei wie unten gezeigt generiert.

Terminal
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

2. FactoryBot-Beschreibung

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.

3. Testcode schreiben

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.

Terminal
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.

Referenzlink

https://github.com/rspec/rspec-rails https://github.com/faker-ruby/faker

Recommended Posts

[Rails] Unit-Testcode für das Benutzermodell
Hinweise zum Generieren von Dummy-Daten für Kennwörter im Unit-Testcode des Rails-Modells
[Rspec] Ablauf von der Einführung von Rspec bis zum Schreiben von Unit-Test-Code für das Modell
[Schienen] Von der Testvorbereitung zum Modelleinheitentest [RSpec]
Nach der Einführung von RSpec schreiben Sie den Unit-Test-Code für das Modell
Verfahren zur Erstellung des RSpec-Unit-Testcodes (Login User Creation Ver.)
[Rails] Testcode mit Rspec
[Rails5] Rspec -Einheitentest beim Verschachteln-
[Schienen] Machen wir einen Unit-Test mit Rspec!
[R Spec on Rails] So schreiben Sie Testcode für Anfänger von Anfängern
Führen Sie RSpec ein und schreiben Sie den Unit-Test-Code
[Ruby on Rails] Modelltest mit RSpec
Ich erhalte folgende Fehler: Der Benutzer muss im Unit-Model-Test vorhanden sein
Artikel und Bücher, die zum Studium von Testcode nützlich sind
Verwenden Sie [Rails], um eine Gastbenutzerfunktion zu entwickeln (für das Portfolio).
Rails Tutorial Test
[Für Anfänger] Testen Sie die Benutzerregistrierung bei RSpec
[Rails] So implementieren Sie einen Unit-Test eines Modells
[Rails] Model Association (Vereinigung)
So schreiben Sie einen Komponententest für Spring Boot 2
[Rails / RSpec] Schreiben Sie einen Modelltest (mit Shoulda Matchers / FactoryBot)
Rails5 Rspec-Testfehler ArgumentError: Werkseitig nicht registriert: Benutzer
Modellassoziation in Rails
Java Unit Test Library-Arterien-Probe
[Lernen / Ausgeben von Testcode]
[Schienen] Test mit RSpec
Was tun, wenn im Testcode der Steuereinheit in Rails der Fehler "302" angezeigt wird?
Machen Sie einen Unit-Test mit Junit.
Verwenden Sie Spring Test + Mockito + JUnit 4 für Spring Boot + Spring Retry Unit Test
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 11. Benutzermodelltest und Validierung hinzugefügt