[RUBY] [Note] Comment démarrer avec Rspec

En faisant cet article

Un mémorandum lors du développement d'une application avec RubyonRails puis de son utilisation pour une autre application (Mac à partir du 21 octobre 2020)

Il m'a fallu beaucoup de temps pour commencer, alors essayez-le si vous voulez en avoir une idée.

Gemme utilisée lors de l'exécution de Rspec

Gemfile


group :test do
  gem 'capybara', '>= 2.15'
  gem 'rspec-rails'
  gem "factory_bot_rails"
  gem 'faker'
end

Terminal


bundle install

rspec-rails Gemme pour exécuter Rspec Framework de test Ruby on Rails RSpec Prise en main https://qiita.com/tatsurou313/items/c923338d2e3c07dfd9ee

capybara Comme Rspec ne fonctionnait pas sans configurer le pilote, le Gem introduit Aide-mémoire Capybara https://qiita.com/morrr/items/0e24251c049180218db4

faker Gemme pour créer des données. Principalement, l'écran lors de l'exécution de Rspec peut être créé aléatoirement à l'aide de la bibliothèque de Gem pour les données de test du test d'entrée. Vous pouvez également saisir des données temporaires dans le fichier de départ, ce qui est pratique. J'ai essayé d'utiliser Faker! (Exemple d'utilisation et d'exécution) https://qiita.com/ginokinh/items/3f825326841dad6bd11e

factory_bot_rails Je l'ai utilisé pour Gem, qui peut d'abord créer des données de test, principalement pour le débogage du modèle. [Rails] Remarques sur l'utilisation de factory_bot https://qiita.com/at-946/items/aaff42e4a9c2e4dd58ed

Installation de Rspec

Terminal


rails generate rspec:install

Les fichiers suivants seront créés lors de l'installation.

Terminal


  Running via Spring preloader in process 9045
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

Paramètres du pilote dans spec_helper.rb

Je ne comprends pas comment cela fonctionne, et probablement grâce aux paramètres ici, je peux exécuter le programme dans le même environnement que le navigateur.

spec_helper.rb


require 'capybara/rspec'
RSpec.configure do |config|
	config.before(:each, type: :system) do
    #driven_by :selenium_chrome_headless
    driven_by :rack_test
	end
end

Après cela, écrivez un programme de test

Vous pouvez créer des données à créer dans le dossier usines, tester le modèle pour validation, etc., et tester le fonctionnement réel à l'écran avec sysyem. Le code est décrit pour référence

factories/users_spec.rb


FactoryBot.define do
  factory :user do
    email { Faker::Internet.email }
    password { 'password' }
    password_confirmation { 'password' }
  end
end

model/user_spec.rb


require 'rails_helper'

RSpec.describe 'Test du modèle utilisateur', type: :model do
  before do
    @user = build(:user)
  end

  describe 'Validation' do
    it 'NG si l'email est vide' do
      @user.email = ''
      expect(@user.valid?).to eq(false)
    end
  end
end

system/user_spec.rb


require 'rails_helper'

describe 'Test d'authentification de l'utilisateur' do
  describe 'Enregistrement d'un nouvel utilisateur' do
    before do
      visit new_user_registration_path
    end
    context 'Transition vers un nouvel écran d'inscription' do
      it 'Nouvelle inscription réussie' do
        fill_in 'user[email]', with: Faker::Internet.email
        fill_in 'user[password]', with: 'password'
        fill_in 'user[password_confirmation]', with: 'password'
        click_button "sign in"                       #Le caractère affiché sur le bouton
        expect(page).to have_content 'successful'   #Veuillez spécifier le message qui sera affiché après la connexion
      end
    end
  end
end

Exécuter Rspec

Tous les tests du dossier spec sont exécutés par la commande suivante, et les tests réussis sont affichés en vert et ceux qui n'ont pas réussi sont affichés en rouge sur le terminal.

Terminal


bundle exec rspec spec/ --format documentation

Je vous remercie pour votre travail acharné.

Recommended Posts

[Note] Comment démarrer avec Rspec
Comment démarrer avec Slim
Comment démarrer avec Eclipse Micro Profile
Les débutants de Rails ont essayé de se lancer avec RSpec
Comment démarrer avec JDBC en utilisant PostgresSQL sur MacOS
J'ai essayé de démarrer avec Web Assembly
Commencez avec Gradle
Comment sortir un fichier de ressources avec spring-boot
Démarrez avec Spring Boot
J'ai essayé de démarrer avec Spring Data JPA
Comment numéroter (nombre) avec html.erb
Comment mettre à jour avec activerecord-import
Présentation de «Introduction à la programmation pratique de la rouille» (jour 3)
Partie 2 Partie II. Comment procéder avec la mise en route Guide de référence de Spring Boot Remarque ①
Comment obtenir JDK etc. depuis Oracle avec CLI
Comment obtenir des valeurs en temps réel avec TextWatcher (Android)
Comment effacer l'image de test après avoir exécuté le test Rspec à l'aide de CarrierWave
Il est maintenant temps de commencer avec l'API Stream
J'ai essayé de démarrer avec Swagger en utilisant Spring Boot
Commençons par la programmation parallèle
[Rails] Comment utiliser l'appareil (Remarque)
[Java] Points à noter avec Arrays.asList ()
Comment entourer n'importe quel caractère avec "~"
Comment obtenir des paramètres dans Spark
Comment utiliser mssql-tools avec Alpine
Mémo à obtenir avec Struts2 + Ajax
Comment démarrer Camunda avec Docker
[Rails / RSpec] Comment traiter l'élément a une erreur de taille nulle
Revue de code facile pour démarrer avec Jenkins / SonarQube: analyse statique
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment installer Adopt OpenJDK sur Debian, Ubuntu avec apt (-get)
[Note] Comment redémarrer le conteneur Windows configuré avec docker-compose
Comment recadrer une image avec libGDX
Comment ajuster TextPosition avec l'extension de clavier iOS
Comment partager des fichiers avec Docker Toolbox
Comment compiler Java avec VsCode & Ant
[Java] Résumez comment comparer avec la méthode equals
[Android] Comment gérer les thèmes sombres
Comment utiliser BootStrap avec Play Framework
Comment changer d'images miniatures avec JavaScript
Comment faire un contrôle basé sur l'API avec cancancan
[Java] Comment obtenir le répertoire actuel
Comment réaliser le téléchargement de fichiers avec Feign
Comment mettre à jour les modèles associés avec accepte_nested_attributes_for
Comment définir JAVA_HOME avec l'appassembler-maven-plugin de Maven
Comment implémenter TextInputLayout avec la fonction de validation
Comment utiliser la classe Java Scanner (Remarque)
Comment obtenir la date avec Java
Comment gérer les erreurs de connexion avec l'appareil
[Note] Comment utiliser Rails 6 Devise + cancancan