Einführung in Rspec, ein Testframework für Ruby on Rails

Was ist ein Test?

Es ist schwierig, alle verschiedenen Verhaltensweisen einer Anwendung manuell zu überprüfen. Durch Schreiben eines Tests kann daher effizient überprüft werden, ob die Daten korrekt übergeben werden und ob sie sich wie erwartet verhalten.

Über das Testframework und Rspec in Ruby

Das bekannteste Ruby-Test-Framework

Testtyp

Im Rails-Tutorial werden verschiedene Arten von Tests verwendet.

Es gibt einen Komponententest, der den Betrieb eines einzelnen Modells oder eines Ansichtshelfers überprüft, einen Funktionstest, der das Aufrufergebnis eines Controllers / einer Ansicht überprüft, und einen integrierten Test, der das Verhalten einer App überprüft, die mehrere Controller umfasst, wobei tatsächliche Benutzeroperationen vorausgesetzt werden. In der Entwicklung werden die obigen Tests häufig durchgeführt.

Einführung

Lege den Edelstein für rspec in die Gemfile


group :development, :test do
  gem 'rspec-rails'
end

nach,

$ bundle install

Lassen.

Fügen Sie bei Bedarf FactoryBot (ehemals FactoryGirl) hinzu. Referenzen: https://qiita.com/at-946/items/aaff42e4a9c2e4dd58ed

Grammatik

Beschreibung der Testanforderungen

describe , it , expect Sie können diese verwenden, um Ihre Testanforderungen zu beschreiben.

Zum Beispiel in einem Unit-Test (Modelltest)

spec/company_spec.rb



RSpec.describe Account, type: :model do
  describe 'company model' do
    it 'Erstellen' do
      expect { create(:company) }.to change { Company.count }.by(1)
    end
  end
end

Wenn in Rspec ein Fehler auftritt, wird der Text im Kontext beschrieben und ausgegeben. Dadurch erhalten Sie eine Vorstellung davon, wo der Fehler aufgetreten ist.

context Sie können auch den Kontext verwenden, um die Bedingung zu verzweigen. Sie können jedes davon erstellen Zum Beispiel im Controller-Test

spec/company_spec.rb


RSpec.describe CompaniesController, type: :controller do
  describe 'Liste abrufen' do
    context 'Wenn Sie angemeldet sind' do
      it 'Gibt 200 zurück' do
        //Testprozess
      end
    end
    context 'Wenn Sie nicht angemeldet sind' do
      it 'Gibt einen 400-Fehler zurück' do
        //Testprozess
      end
    end
  end
end

Richtig verwenden

Einstufung Beschreiben
describe Vorbehaltlich des Tests
context Beschreiben Sie die Fallklassifizierung bestimmter Bedingungen
it Beschreiben Sie die Ausgabe

Nachdem wir das Verhalten wie oben beschrieben haben, schreiben wir den Test.

let , let!

Beschreiben Sie diese Verarbeitung, wenn Sie Testdaten im Test verwenden. Zum Beispiel

spec/company_spec.rb


RSpec.describe CompaniesController, type: :controller do
  describe 'Liste abrufen' do
    context 'Wenn Sie angemeldet sind' do
      it 'Gibt 200 zurück' do
        let(:company) { Company.create(name: 'Yamada Co., Ltd.', email: '[email protected]') }
        #Testprozess
      end
    end
    context 'Wenn Sie nicht angemeldet sind' do
      it 'Gibt einen 400-Fehler zurück' do
        #Testprozess
      end
    end
  end
end

Erstellen Sie Daten in dem Teil, in dem Sie den Prozess wie oben beschrieben schreiben.

lass lass! ist jeder

Einstufung Auswertungszeitpunkt
let Wird verarbeitet, wenn die Methode zum ersten Mal aufgerufen wird
let! Vor der Blockausführung verarbeitet

Mit anderen Worten, im obigen Beispiel

let(:company) { Company.new(name: 'Yamada Co., Ltd.', email: '[email protected]') }

Zu diesem Zeitpunkt wurde noch keine Firma erstellt Zum Beispiel

process :show, method: :get, params: { company_id: company.id }

Der Unterschied besteht darin, dass es erstellt wird, wenn das Unternehmen wie in aufgerufen wird.

Ein Fehler kann aufgrund des unterschiedlichen Zeitpunkts des Aufrufs auftreten. Daher möchte ich diesen Unterschied beachten.

before / after Wenn es einen Prozess gibt, den Sie vor und nach dem Test ausführen möchten, beschreiben Sie den Prozess hier.

Von Rspec erstellte Daten werden nach dem Testen grundsätzlich aus der Testdatenbank gelöscht.

Am Ende

Ich werde zusammenfassen, was ich persönlich mit Rspec zu tun habe. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten!

Verweise

https://qiita.com/jnchito/items/42193d066bd61c740612#context-%E3%81%A7%E6%9D%A1%E4%BB%B6%E5%88%A5%E3%81%AB%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E5%8C%96%E3%81%99%E3%82%8B https://qiita.com/uchiko/items/d34c5d1298934252f58f

Recommended Posts

Einführung in Rspec, ein Testframework für Ruby on Rails
[Ruby on Rails] Test mit RSpec anzeigen
[Ruby on Rails] Controller-Test mit RSpec
[Ruby on Rails] Modelltest mit RSpec
Verstehen Sie die Codeabdeckung mit Rspec, dem Ruby on Rails-Testframework
Einführung in Rspec mit Ruby on Rails x Docker
[Ruby on Rails] Bis zur Einführung von RSpec
Ruby on Rails Elementary
[Ruby on Rails] Ein Memorandum mit Layoutvorlagen
Ruby on Rails Grundlagen
[Schienen] Test mit RSpec
(Ruby on Rails6) Erstellen von Daten in einer Tabelle
Ruby On Rails Association
Ich habe mit Ruby On Rails ein Portfolio erstellt
[Ruby On Rails] Testfehler mit RSpec MySQL-Client ist nicht verbunden
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
Führen Sie Ruby on Rails RSpec-Tests mit GitHub-Aktionen aus
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
[Rails] Testcode mit Rspec
Poste Videos auf Schienen
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
[Rails] Informationen zum Rspec-Antworttest
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
[Ruby on Rails] Beim Ausführen von RSpec wird eine Warnung angezeigt, da gem'chromedriver-helper 'veraltet ist.
[Ruby on Rails] Fügen Sie eine Spalte mit externen Schlüsselbeschränkungen hinzu
Ein Hinweis zum Seed-Feature von Ruby on Rails
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
Erklärung von Ruby on Rails für Anfänger ③ ~ Erstellen einer Datenbank ~
Wenden Sie CSS auf eine bestimmte Ansicht in Ruby on Rails an
[Ruby on Rails] Beim Ausführen von RSpec wird aufgrund einer anderen Gem-Version eine Warnung angezeigt.
Die Geschichte der Einführung eines sehr Rails-ähnlichen serverlosen Frameworks "Ruby on Jets" in die Produktionsumgebung
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
Verwendung von Ruby on Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
(Ruby on Rails6) Gepostete Inhalte "löschen"
[Ruby on Rails] CSV-Ausgabefunktion
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Rails5] Rspec -Einheitentest beim Verschachteln-
[Ruby on Rails] Erstellung der Bestätigungsseite
Ruby On Rails entwickelt Routing-Konflikte