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.
Das bekannteste Ruby-Test-Framework
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.
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
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
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.
Ich werde zusammenfassen, was ich persönlich mit Rspec zu tun habe. Ich würde mich freuen, wenn Sie auf Fehler hinweisen könnten!
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