[RUBY] [Hinweis] Erste Schritte mit Rspec

Bei der Erstellung dieses Artikels

Ein Memorandum, wenn eine Anwendung mit RubyonRails entwickelt und dann für eine andere Anwendung verwendet wird (Mac ab 21. Oktober 2020)

Ich habe lange gebraucht, um loszulegen. Bitte versuchen Sie es, wenn Sie ein Gefühl dafür bekommen möchten.

Edelstein, der bei Rspec verwendet wird

Gemfile


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

Terminal


bundle install

rspec-rails Juwel zum Ausführen von Rspec Ruby on Rails-Testframework RSpec wird gestartet https://qiita.com/tatsurou313/items/c923338d2e3c07dfd9ee

capybara Da Rspec ohne Einstellung des Treibers nicht funktionierte, wurde der Gem eingeführt Capybara Spickzettel https://qiita.com/morrr/items/0e24251c049180218db4

faker Juwel zum Erstellen von Daten. Hauptsächlich kann der Bildschirm beim Ausführen von Rspec mithilfe der Bibliothek in Gem für die Testdaten des Eingabetests zufällig erstellt werden. Sie können auch temporäre Daten in die Seed-Datei eingeben, was praktisch ist. Ich habe versucht, Faker zu verwenden! (Verwendungs- und Ausführungsbeispiel) https://qiita.com/ginokinh/items/3f825326841dad6bd11e

factory_bot_rails Ich habe es für Gem verwendet, das zuerst Testdaten erstellen kann, hauptsächlich für das Debuggen von Modellen. [Rails] Hinweise zur Verwendung von factory_bot https://qiita.com/at-946/items/aaff42e4a9c2e4dd58ed

Rspec-Installation

Terminal


rails generate rspec:install

Die folgenden Dateien werden bei der Installation erstellt.

Terminal


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

Treibereinstellungen in spec_helper.rb

Ich verstehe nicht, wie es funktioniert, und wahrscheinlich kann ich das Programm dank der Einstellungen hier in derselben Umgebung wie der Browser ausführen.

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

Danach schreiben Sie tatsächlich ein Testprogramm

Sie können Daten erstellen, die im Ordner "Fabriken" erstellt werden sollen, das Modell auf Validierung testen usw. und den tatsächlichen Bildschirmbetrieb mit sysyem testen. Der Code wird als Referenz beschrieben

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 'Testen des Benutzermodells', type: :model do
  before do
    @user = build(:user)
  end

  describe 'Validierung' do
    it 'NG, wenn die E-Mail leer ist' do
      @user.email = ''
      expect(@user.valid?).to eq(false)
    end
  end
end

system/user_spec.rb


require 'rails_helper'

describe 'Benutzerauthentifizierungstest' do
  describe 'Neue Benutzerregistrierung' do
    before do
      visit new_user_registration_path
    end
    context 'Übergang zum neuen Registrierungsbildschirm' do
      it 'Erfolgreiche Neuanmeldung' 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"                       #Das auf der Schaltfläche angezeigte Zeichen
        expect(page).to have_content 'successful'   #Bitte geben Sie die Nachricht an, die nach der Anmeldung angezeigt wird
      end
    end
  end
end

Führen Sie Rspec aus

Alle Tests im Spezifikationsordner werden mit dem folgenden Befehl ausgeführt. Die erfolgreichen Tests werden grün und die nicht erfolgreichen rot auf dem Terminal angezeigt.

Terminal


bundle exec rspec spec/ --format documentation

Danke für deine harte Arbeit.

Recommended Posts

[Hinweis] Erste Schritte mit Rspec
Wie fange ich mit schlank an?
Erste Schritte mit Eclipse Micro Profile
Rails-Anfänger haben versucht, mit RSpec zu beginnen
Erste Schritte mit JDBC mit PostgresSQL unter MacOS
Ich habe versucht, mit Web Assembly zu beginnen
Beginnen Sie mit Gradle
So löschen Sie eine Ressourcendatei mit Spring-Boot
Beginnen Sie mit Spring Boot
Ich habe versucht, mit Spring Data JPA zu beginnen
Wie man mit html.erb nummeriert (nummeriert)
So aktualisieren Sie mit activerecord-import
Einführung in "Einführung in die praktische Rostprogrammierung" (Tag 3)
Teil 2 Teil II. So fahren Sie mit den ersten Schritten fort Spring Referenzhandbuch Note Hinweis ①
Wie man mit cli jdk etc. von oracle bekommt
So erhalten Sie Werte in Echtzeit mit TextWatcher (Android)
So löschen Sie das Testbild, nachdem Sie den Rspec-Test mit CarrierWave ausgeführt haben
Jetzt ist es an der Zeit, mit der Stream-API zu beginnen
Ich habe versucht, mit Swagger mit Spring Boot zu beginnen
Beginnen wir mit der parallelen Programmierung
[Schienen] Verwendung von Geräten (Hinweis)
[Java] Mit Arrays.asList () zu beachtende Punkte
Wie man ein Zeichen mit "~" einschließt
So erhalten Sie Parameter in Spark
Wie man mssql-tools mit alpine benutzt
Memo mit Struts2 + Ajax zu bekommen
So starten Sie Camunda mit Docker
[Rails / RSpec] Der Umgang mit Elementen weist einen Größenfehler von Null auf
Einfache Codeüberprüfung für den Einstieg in Jenkins / SonarQube: Statische Analyse
So erhalten Sie den Wert von Boolean mit jQuery in einfacher Rails-Form
So installieren Sie Adopt OpenJDK unter Debian, Ubuntu mit apt (-get)
[Hinweis] So starten Sie den mit Docker-Compose eingerichteten Windows-Container neu
So beschneiden Sie ein Bild in libGDX
So passen Sie TextPosition mit der iOS-Tastaturerweiterung an
So teilen Sie Dateien mit Docker Toolbox
So kompilieren Sie Java mit VsCode & Ant
[Java] Fassen Sie zusammen, wie Sie mit der Methode equals vergleichen können
[Android] Wie man mit dunklen Themen umgeht
Verwendung von BootStrap mit Play Framework
So wechseln Sie Miniaturbilder mit JavaScript
API-basierte Steuerung mit cancancan
[Java] So erhalten Sie das aktuelle Verzeichnis
So erreichen Sie den Dateidownload mit Feign
So aktualisieren Sie verwandte Modelle mit accept_nested_attributes_for
So setzen Sie JAVA_HOME mit dem Appassembler-Maven-Plugin von Maven
So implementieren Sie TextInputLayout mit Validierungsfunktion
Verwendung der Java Scanner-Klasse (Hinweis)
So erhalten Sie das Datum mit Java
So behandeln Sie Anmeldefehler mit devise
[Hinweis] Verwendung von Rails 6 Devise + Cancancan