[RUBY] Führen Sie RSpec ein und schreiben Sie den Unit-Test-Code

Überblick

Dieses Mal werde ich den Ablauf des Schreibens des Unit-Test-Codes des Benutzermodells durch Einführung von rspec zusammenfassen.

Gleichzeitig wurden FactoryBot und Faker eingeführt und implementiert, daher werde ich sie beschreiben.

Was ist FactoryBot?

Es ist ein Tool, das Daten zum Testen erstellt.

Was ist Faker?

Sie können den von FactoryBot erstellten Daten nach dem Zufallsprinzip Inhalte hinzufügen.

Einführung und Vorbereitung von Edelsteinen

Achten Sie auf den Speicherort der Gemfile. Nicht unten.

gemfile


group :development, :test do
  gem 'rspec-rails'
  gem 'factory_bot_rails'
  gem 'faker'
end

danach $ bundle install Machen.

Führen Sie als Nächstes den Befehl aus, um ein Verzeichnis zum Schreiben von RSpec zu generieren.

Terminal


rails g rspec:install

Dies sollte Verzeichnisse und Dateien generieren.

Als nächstes schreiben wir Folgendes in .rspec.

.rspec


--require spec_helper
--format documentation

Zuletzt generieren wir eine FactoryBot-Datei. Erstellen Sie Ihr eigenes Fabrikverzeichnis im Spezifikationsverzeichnis und erstellen Sie diesmal users.rb.

Jetzt ist die Vorbereitung in Ordnung.

Geben Sie den Wert in FactoryBot an

Definieren wir jeden Wert in der zuvor erstellten Datei.

spec/factories/users.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}
    family_name { "Yamada" }
    first_name {"Taro"}
    read_family {"Yamada"}
    read_first {"Taro"}
    birth {Faker::Date.between(from: '1930-01-01', to: '2015-12-31')}
  end
end

Der Punkt hier ist, dass einige Faker verwenden und andere nicht. Faker kann nur zufällig alphanumerische Zeichen generieren. Daher wurden Familienname usw. diesmal angemessen bewertet.

Es scheint ein Juwel zu geben, das Dummy-Daten auf Japanisch erstellen kann, aber diesmal habe ich es aufgegeben.

Testcode schreiben

Generieren Sie zunächst als Vorbereitung eine Datei, um den Testcode mit einem Befehl zu schreiben.

Terminal


rails g rspec:model user

Dann spec/models/user_spec.rb Wird generiert.

Schreiben wir dort den Unit-Test-Code.

user_spec.rb


require 'rails_helper'

RSpec.describe User, type: :model do
  describe '#create' do
    before do
      @user = FactoryBot.build(:user)
    end

    it "Kann nicht registriert werden, wenn der Spitzname leer ist" do
      @user.nickname = nil
      @user.valid?
      expect(@user.errors.full_messages).to include("Nickname can't be blank")
    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("Email can't be blank")
    end
    it "Sie können sich nicht registrieren, wenn die E-Mail nicht eindeutig ist" do
      @user.save
      another_user = FactoryBot.build(:user, email: @user.email)
      another_user.valid?
      expect(another_user.errors.full_messages).to include("Email has already been taken")
    end
---Kürzung---
 end
end

Da es lang ist, habe ich es erheblich weggelassen, aber ich werde es so beschreiben.

Der Punkt ist Vorher müssen FactoryBot-Daten mit Instanzvariablen richtig definiert werden. Ich habe das vergessen und @user wurde null und ging einmal verloren (de amateur)

Wenn Sie es gut schreiben können, am Terminal

Terminal


bundle exec rspec spec/models/user_spec.rb

Geben Sie einen Befehl ein, um den Test auszuführen.

Recommended Posts

Führen Sie RSpec ein und schreiben Sie den Unit-Test-Code
Lassen Sie uns das Spock-Framework einführen und Unit-Tests wie Testfahrten schreiben
Ausführung des RSpec-Testcodes
Verfahren zur Erstellung des RSpec-Unit-Testcodes (Login User Creation Ver.)
Schreiben Sie zur Implementierung den Test und codieren Sie den Prozess
[Rails] Testcode mit Rspec
Schreiben Sie den Testcode mit Spring Boot
[Rails5] Rspec -Einheitentest beim Verschachteln-
Über App-Tests RSpec (Unit Test)
Kopieren Sie den Test und fügen Sie ihn mit RSpec ein
[RSpec] Unit Test (mit gem: factory_bot)
[Schienen] Machen wir einen Unit-Test mit Rspec!
[R Spec on Rails] So schreiben Sie Testcode für Anfänger von Anfängern
Ich habe getestet, wie man Rubys Test / Gerät und Janken's Code verwendet.
Reihenfolge der Vor- und Nachbearbeitung des JUnit-Unit-Tests
[Rails] Unit-Testcode für das Benutzermodell
Ich möchte einen Unit Test schreiben!
Schreiben Sie Code, der schwer zu testen ist
Schreiben Sie Code mit Ruby-Klassen und -Instanzen
[Rspec] Ablauf von der Einführung von Rspec bis zum Schreiben von Unit-Test-Code für das Modell
Artikel und Bücher, die zum Studium von Testcode nützlich sind
Nach der Einführung von RSpec schreiben Sie den Unit-Test-Code für das Modell
So schreiben Sie Testcode mit Basic-Zertifizierung
[Schienen] Von der Testvorbereitung zum Modelleinheitentest [RSpec]
So schreiben Sie einen Komponententest für Spring Boot 2
[Rails / RSpec] Schreiben Sie einen Modelltest (mit Shoulda Matchers / FactoryBot)
Web-API-Komponententest und Integrationstest mit SpringBoot + Junit5, 4 Muster
Dynamisches Schreiben iterativer Testfälle mit test / unit (Test :: Unit)
Java Unit Test Library-Arterien-Probe
[Lernen / Ausgeben von Testcode]
[Schienen] Test mit RSpec
Testen Sie Nokogiri mit Rspec.
Machen Sie einen Unit-Test mit Junit.
Ich habe einen Unit-Test der Rails-Anwendung mit RSpec und FactoryBot versucht