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.
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
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
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
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
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