Je vais présenter Rspec et écrire le code de test. La commande utilise la commande de l'environnement docker.
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
L'installation est terminée.
docker-compose run webrails g rspec:install
Lorsque la commande ci-dessus est exécutée, le fichier suivant est généré.
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 "nom d'utilisateur et email,mot de passe et mot de passe_Si la confirmation existe, vous pouvez vous inscrire" do
user = build(:user)
expect(user).to be_valid
end
it "Impossible de s'inscrire sans nom d'utilisateur" do
user = build(:user, username: nil)
user.valid?
expect(user.errors[:username]).to include("can't be blank")
end
it "Impossible de s'inscrire sans e-mail" do
user = build(:user, email: nil)
user.valid?
expect(user.errors[:email]).to include("can't be blank")
end
it "Impossible de s'inscrire sans mot de passe" do
user = build(:user, password: nil)
user.valid?
expect(user.errors[:password]).to include("can't be blank")
end
it "mot de passe même si le mot de passe existe_Impossible de s'inscrire sans confirmation" do
user = build(:user, password_confirmation: "")
user.valid?
expect(user.errors[:password_confirmation]).to include("doesn't match Password")
end
it "Impossible de s'inscrire s'il y a des e-mails en double" 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 "Vous pouvez vous inscrire si le mot de passe contient 6 caractères ou plus" do
user = build(:user, password: "000000", password_confirmation: "000000")
expect(user).to be_valid
end
it "Impossible d'enregistrer si le mot de passe est de 5 caractères ou moins" 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
Si tel est le cas, le test a réussi.
Cette fois, je suis entré dans le test en utilisant Rspec. Nous testerons également le contrôleur à l'avenir. Merci d'avoir lu jusqu'au bout: sourire:
Recommended Posts