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.
Es ist ein Tool, das Daten zum Testen erstellt.
Sie können den von FactoryBot erstellten Daten nach dem Zufallsprinzip Inhalte hinzufügen.
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.
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.
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