Achten Sie darauf, die Webkonsole nicht zu duplizieren
Gemfile
gem 'rspec-rails'
group :development do
gem 'web-console'
end
Nach Bundle Install`` Rails g rspec: install
Bearbeiten Sie die .rspec-Datei, um sie in einem einfach zu lesenden Format wie folgt anzuzeigen:
.rspec
--format documentation
Lassen Sie uns an dieser Stelle überprüfen, ob RSpec ordnungsgemäß funktioniert.
bundle exec rspec
Terminal
Wenn es normal funktioniert, wird es so sein
No examples found.
Finished in 0.00031 seconds (files took 0.19956 seconds to load)
0 examples, 0 failures
.rspec spec spec/spec_helper.rb Wie rails_helper.rb ist es eine Datei, die allgemeine Einstellungen für RSpec schreibt, dies wird jedoch verwendet, wenn RSpec ohne Rails verwendet wird.
spec/rails_helper.rb Dies ist eine Datei zum Schreiben allgemeiner Einstellungen bei Verwendung von RSpec in Rails. Wenden Sie allgemeine Einstellungen und Methoden an, indem Sie diese Datei in jeder Testdatei lesen
Gemfile
group :development, :test do
#Kürzung
gem 'rspec-rails'
gem 'factory_bot_rails'
end
** Erstelle Datei **
Erstellen Sie eine Ruby-Datei mit dem Plural-Dateinamen der erstellten Instanz
Diesmal erstellt, damit es zu spec / factories / users.eb
wird.
** Datei bearbeiten ** Erleichtern Sie das Erstellen einer Instanz oder das Speichern in der Datenbank mithilfe einer bestimmten Methode in der Spezifikationsdatei
user.rb
FactoryBot.define do
factory :user do
nickname {"abe"}
email {"[email protected]"}
password {"00000000"}
password_confirmation {"00000000"}
end
end
** Erstellungsmethode ** Erstellen Sie eine Instanz des Klassennamens als Symboltyp als Argument basierend auf der Beschreibung von factory_bot
Beispiel
#factory_Wenn Sie keinen Bot verwenden
user = User.new(nickname: "abe", email: "[email protected]", password: "00000000", password_confirmation: "00000000")
#factory_Bei Verwendung von Bot
user = FactoryBot.build(:user)
** Methode erstellen ** Es funktioniert fast genauso wie Build, aber beim Erstellen wird der Wert in der Test-DB gespeichert. Der Test wird einmal ausgeführt und der Inhalt der Test-DB wird bei jedem Abschluss zurückgesetzt.
Beispiel
#Die erstellte Instanz wird in der DB gespeichert
user = FactoryBot.create(:user)
Wenn Sie eine Instanz mit factory_bot erstellen, können Sie die Beschreibung von FactoryBot der Klasse, die der Empfänger ist, weglassen.
rails_helper.rb
#Kürzung
RSpec.configure do |config|
#Folgende Beschreibung wurde hinzugefügt
config.include FactoryBot::Syntax::Methods
#Kürzung
end
Testcode für "Benutzermodell"
** Erstellen einer Spezifikationsdatei **
Dateinamenskonvention entsprechende Klassenname_spec.rb
Erstellen Sie es so, dass es zu spec / models / user_spec.rb wird.
user_spec.rb
require 'rails_helper'
describe User do
describe '#create' do
it "Ohne Spitznamen kann nicht registriert werden" do
user = build(:user, nickname: "")
user.valid?
expect(user.errors[:nickname]).to include("can't be blank")
end
end
end
describe beschreiben erstellt unmittelbar nach dem Ende eine Reihe von Tests. Schreiben Sie in das "", das auf die Beschreibung folgt, eine Beschreibung der Gruppe.
** es und Beispiel ** Es stellt eine Reihe von funktionierenden Testcodes dar, die als Beispiel bezeichnet werden. Schreiben Sie eine Beschreibung des Beispiels in das darauf folgende "".
** Erwartung ** Es ist die Formel, die tatsächlich ausgewertet wird. Schreiben Sie dazwischen. In der obigen Formel ist der Teil "erwarten (user.errors [: nickname]). Einschließen (" kann nicht leer sein ")" die Erwartung.
** Matcher ** Zeigt die Bedingungen an, unter denen der Test die Erwartung erfüllt.
valid? Aktivieren Sie "Befindet es sich in einem Zustand, in dem es aufgrund einer Validierung nicht gespeichert werden kann?" Der Rückgabewert der Methode ist true / false
errors Wenn Sie die Fehlermethode für eine Instanz verwenden, die die gültige? -Methode verwendet, überprüfen Sie, warum sie nicht gespeichert werden kann, wenn sie aufgrund der Validierung nicht gespeichert werden kann.
include Sie können überprüfen, ob der als Argument verwendete Wert in dem Array enthalten ist, das das erwartete Argument ist Doppeltes Muster: wurde bereits aufgenommen Leeres Muster: darf nicht leer sein Unzureichendes Zeichenmuster: ist zu kurz Muster mit zu vielen Zeichen: ist zu lang
be_valid Es wird übergeben, wenn die als Argument der Erwartung festgelegte Instanz alle Validierungen löscht. Beispiel unten
sample_spec.rb
it "Kann registriert werden, wenn der Spitzname 6 Zeichen oder weniger beträgt" do
user = build(:user, nickname: "aaaaaa")
expect(user).to be_valid
end
eq Wenn sie gleich sind, werden sie bestehen. Beispiel unten
sample_spec.rb
describe "sum" do
it "1 +1 wird 2" do
expect(1 + 1).to eq 2
end
end
Recommended Posts