Ich werde Rspec einführen und Testcode schreiben. Der Befehl verwendet den Befehl der Docker-Umgebung.
group :development, :test do
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker', "~> 2.8"
end
docker-compose run web bundle install
docker-compose build
Die Installation ist abgeschlossen.
docker-compose run webrails g rspec:install
Wenn der obige Befehl ausgeführt wird, wird die folgende Datei generiert.
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
.rspc
--format documentation
spec/models/user_spec.rb
require 'rails_helper'
describe User do
describe '#create' do
it "Benutzername und E-Mail,Passwort und Passwort_Wenn eine Bestätigung vorliegt, können Sie sich registrieren" do
user = build(:user)
expect(user).to be_valid
end
it "Ohne Benutzername kann nicht registriert werden" do
user = build(:user, username: nil)
user.valid?
expect(user.errors[:username]).to include("can't be blank")
end
it "Ohne E-Mail kann nicht registriert werden" do
user = build(:user, email: nil)
user.valid?
expect(user.errors[:email]).to include("can't be blank")
end
it "Ohne Passwort kann nicht registriert werden" do
user = build(:user, password: nil)
user.valid?
expect(user.errors[:password]).to include("can't be blank")
end
it "Passwort auch wenn Passwort existiert_Kann nicht ohne Bestätigung registriert werden" do
user = build(:user, password_confirmation: "")
user.valid?
expect(user.errors[:password_confirmation]).to include("doesn't match Password")
end
it "Kann nicht registriert werden, wenn doppelte E-Mails vorhanden sind" do
user = create(:user)
another_user = build(:user, email: user.email)
another_user.valid?
expect(another_user.errors[:email]).to include("has already been taken")
end
it "Sie können sich registrieren, wenn das Passwort aus 6 Zeichen oder mehr besteht" do
user = build(:user, password: "000000", password_confirmation: "000000")
expect(user).to be_valid
end
it "Kann nicht registriert werden, wenn das Passwort 5 Zeichen oder weniger enthält" do
user = build(:user, password: "00000", password_confirmation: "00000")
user.valid?
expect(user.errors[:password]).to include("is too short (minimum is 6 characters)")
end:grin:
end
end
spec/factories/users.rb
FactoryBot.define do
factory :user do
username {"aaa"}
password {"000000"}
password_confirmation {"000000"}
sequence(:email) {Faker::Internet.email}
end
end
docker-compose run web bundle exec rspec
8 examples, 0 failures
In diesem Fall wurde der Test erfolgreich bestanden.
Dieses Mal habe ich den Test mit Rspec eingegeben. Wir werden den Controller auch in Zukunft testen. Vielen Dank für das Lesen bis zum Ende: grinsen:
Recommended Posts