[RUBY] Hallo RSpec

Ich bin ein neuer Rails-Ingenieur. Ich habe RSpec beim Testen von Rails gelernt und es zusammengefasst. Wir serialisieren einen Ingenieur, der in 100 Tagen zu einer Portion wird. Heute ist der 7. Tag Übrigens für einen Vergleich zwischen Minitest und RSpec hier

Was ist RSpec?

Ein Framework, das eine domänenspezifische Sprache (DSL) zum Testen von Klassen und Methoden verwendet, die in Ruby und Ruby on Rails erstellt wurden. Mit anderen Worten, es ist eine reine Testprogrammiersprache.

FactoryBot Ein Juwel, das die Erstellung von Testdaten unterstützt FactoryBot erleichtert die Vorbereitung von Testdaten Es gibt auch einen Mechanismus namens Fixture im Rails-Standard. Es ist einfacher, den Status von Daten und die Beziehung zwischen Daten zu erfassen als hier. Also diesmal benutze ich das auch.

Capybara E2E-Testframework (End-to-End) für Webanwendungen. Es wird in Kombination mit RSpec usw. verwendet. Sie können den Browserbetrieb einer Webanwendung simulieren.

Grundform von RSpec

Die Grundform der RSpec-Beschreibung lautet wie folgt.

describe [Ziel zur Beschreibung der Spezifikation(Testziel)], type[Art der Spezifikation] do
  context[Eine Situation] do
    before do
      [Vorbereitungen]
    end
    it[Inhalt der Spezifikationen (Überblick über die Erwartungen)] do
      [Erwartetes Verhalten]
    end
  end
end

Es ist schwer zu verstehen, selbst wenn Sie sich das ansehen, also werde ich es teilen. describe

describe [Ziel zur Beschreibung der Spezifikation(Testziel)], type[Art der Spezifikation] do

end

Schreiben Sie in "Beschreiben", wofür Sie die Spezifikation beschreiben möchten. Zum Beispiel, wenn Sie eine Spezifikation für die Systemtest- und Profilanzeigefunktion schreiben möchten

describe 'Profilanzeigefunktion', type: :system do

So wurde es gesagt.

context Dies wird verwendet, um den Inhalt des Tests entsprechend der Situation und der Variation des Zustands zu klassifizieren. Zum Beispiel, ob die Benutzereingabe korrekt oder falsch ist, ob der Benutzer angemeldet ist usw. Ich werde es im Kontext beschreiben.

before Vorher schreibt der Code, um die Voraussetzungen für den gesamten Bereich zu implementieren Das Folgende sind Voraussetzungen für die Anzeige eines Profils. In diesem Fall ist es Voraussetzung, dass Sie angemeldet sind

context 'Wenn der Benutzer angemeldet ist' do
  before do
    visit login_path
    fill_in 'Mail Adresse', with: '[email protected]'
    fill_in 'Passwort', with: 'password'
    click_button 'Einloggen'
  end
end

it Das letzte beschreibt das erwartete Verhalten und den Text im Code innerhalb des Blocks expect(page).to have_content 'hoge' Die obige Beschreibung hat den Inhalt "hoge" auf dem Bildschirm, richtig? ?? Es ist der Inhalt. Da erwartet wird, dass es Inhalte gibt, ist es bis dahin so, wenn es auf Englisch bleibt.

#Auf dem Profilbildschirm'Benutzerprofil'Es gibt Inhalte??
it 'Das Benutzerprofil wird angezeigt' do
  expect(page).to have_content 'Benutzerprofil'
end

Um das Obige zusammenzufassen


describe 'Profilanzeigefunktion', type: :system do
  context 'Wenn der Benutzer angemeldet ist' do
    before do
      visit login_path
      fill_in 'Mail Adresse', with: '[email protected]'
      fill_in 'Passwort', with: 'password'
      click_button 'Einloggen'
    end
    it 'Das Benutzerprofil wird angezeigt' do
      expect(page).to have_content 'Benutzerprofil'
    end
  end
end

Auf diese Weise wird die Grundform von RSpec festgelegt. Es ist schwer, alles plötzlich zu verstehen, aber wenn ich es teile, scheint es ganz so.

Dieses Mal habe ich es so zusammengefasst, wie man die Grundform sieht. Es sieht tatsächlich verschachtelter und komplizierter aus, Zunächst möchte ich die Grundform festhalten und mein Verständnis von RSpec vertiefen.

Das ist alles für heute ** 93 Tage, um ein vollwertiger Ingenieur zu werden **

Recommended Posts

Hallo RSpec
Einführung von RSpec
RSpec-Installation
RSpec Setup
Rspec, TDD (1)
Rspec Einführung note_Rails
Java, Hallo Welt!
Java Hallo Welt
Hallo Java Lambda
Rspec Basics [Rails]
[Rails5] Rspec -validierung-