[Rails] Code de test à l'aide de Rspec

introduction

Je vais présenter Rspec et écrire le code de test. La commande utilise la commande de l'environnement docker.

Introduction de Gem

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.

Paramètres Rspec

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

Création de code

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.

en conclusion

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

[Rails] Code de test à l'aide de Rspec
Exécution du code de test RSpec
[Rails] Test avec RSpec
[Rails] À propos du test de réponse Rspec
[Rails / RSpec] Ecrire un test de modèle (avec Shoulda Matchers / FactoryBot)
Téléchargement d'images à l'aide de CarrierWave ~ Test Rspec ~
[Rails5] Rspec -Test d'unité lors de l'imbrication-
[RSpec] Test unitaire (avec gem: factory_bot)
[rails] Faisons un test unitaire avec Rspec!
[Rails] Code de test unitaire pour le modèle utilisateur
[Ruby on Rails] Afficher le test avec RSpec
[Ruby on Rails] Vérification du code à l'aide de Rubocop-airbnb
[R Spec on Rails] Comment écrire du code de test pour les débutants par les débutants
Comprendre la couverture du code avec Rspec, le framework de test Ruby on Rails
[Ruby on Rails] Test du contrôleur avec RSpec
Principes de base de Rspec [Rails]
[Ruby on Rails] Test de modèle avec RSpec
[Rails5] Rspec -validation-
Présentation de Rspec, un framework de test pour Ruby on Rails
Tester le code à l'aide d'une maquette avec JUnit (centre EasyMock)
[Tester l'apprentissage / la sortie du code]
[Ruby On Rails] Erreur de test utilisant le client RSpec MySQL n'est pas connecté
Testez Nokogiri avec Rspec.
Rails, procédure d'installation RSpec
[Rails] De la préparation du test au test unitaire du modèle [RSpec]
Procédure de création du code de test unitaire RSpec (création de l'utilisateur de connexion Ver.)
Erreur de test Rails5 Rspec ArgumentError: Usine non enregistrée: utilisateur
J'ai essayé un test unitaire de l'application Rails en utilisant RSpec et FactoryBot
Authentification SNS à l'aide de Rails google
[RSpec] Utilisez WebMock pour tester la logique à l'aide d'une API externe
Ce à quoi j'étais accro en utilisant rspec sur des rails
[RSpec] Utilisons FactoryBot [Rails]
Japaneseize en utilisant i18n avec Rails
[Rails] Localisation japonaise à l'aide de rails-i18n
Tester Active Strage avec RSpec
Collection de méthodes de code de test Java
Test unitaire d'architecture avec ArchUnit
Tester le résolveur GraphQL avec rspec
[Rails] Test d'intégration avec Capybara (de l'introduction à l'exécution simple du test)
Erreur lors de l'utilisation des rails capybara
[Rails] Essayez d'utiliser le middleware de Faraday
Conseils détaillés lors de l'utilisation de Rails
[Rails 6] Revue en forme d'étoile utilisant Raty.js
[Challenge CircleCI from 0] Construire un test automatisé (Rails6.0, mysql8.0, Rspec)
Remarques sur la génération de données factices pour les mots de passe dans le code de test unitaire du modèle Rails
[Hidden_field] Envoyez des informations en utilisant les rails hidden_field !!!!
Rails 5 Lecture de code Partie 2 ~ Vue Action ~