Ich denke, es gibt eine Möglichkeit, nur Tests mit einem bestimmten Label durchzuführen. Weiß jemand Bescheid?
Es ist nicht einfach, die Dokumentation zu finden, aber Sie können Beispiele mit einem Hash versehen. Z.B.
# spec/my_spec.rb
describe SomeContext do
it "won't run this" do
raise "never reached"
end
it "will run this", :focus => true do
1.should == 1
end
end
$ rspec --tag focus spec/my_spec.rb
Weitere Infos zu GitHub . (Jeder mit einem besseren Link, bitte beraten)
(aktualisieren)
RSpec ist hier jetzt hervorragend dokumentiert . Weitere Informationen finden Sie im Abschnitt --tag option .
Ab Version 2.6 kann diese Art von Tag noch einfacher ausgedrückt werden, indem die Konfigurationsoption hinzugefügt wird treat_symbols_as_metadata_keys_with_true_values
, mit der Sie Folgendes tun können:
describe "Awesome feature", :awesome do
wo :awesome
wird behandelt, als ob es wäre :awesome => true
.
In dieser Antwort erfahren Sie auch, wie Sie RSpec so konfigurieren, dass automatisch "fokussierte" Tests ausgeführt werden. Dies funktioniert besonders gut mit Guard .
:focus
, wodurch auch verhindert wird, dass unerwünschte Ereignisse wie 'binding.pry,
console.log ' usw. in die Codebasis eindringen.rspec
Programms beschreibt :) Weil das Relish-Dokument dies nicht tut.Sie können alle Tests, die eine bestimmte Zeichenfolge enthalten, mit der Option --example (oder -e) ausführen :
Ich benutze das am meisten.
quelle
In Ihrem
spec_helper.rb
:und dann auf Ihre Spezifikationen:
Sie können Tests auch mit 'fit' fokussieren oder mit 'xit' ausschließen, wie folgt:
quelle
config.filter_run_when_matching
und es könnte funktionieren, indem man einfach:focus
zum Beispiel hinzufügtAlternativ können Sie die Zeilennummer übergeben:
rspec spec/my_spec.rb:75
- Die Zeilennummer kann auf eine einzelne Spezifikation oder einen Kontext- / Beschreibungsblock verweisen (wobei alle Spezifikationen in diesem Block ausgeführt werden).quelle
Sie können auch mehrere Zeilennummern mit einem Doppelpunkt verbinden:
Ausgabe:
quelle
Ab RSpec 2.4 (ich glaube) können Sie einen prepend
f
oderx
zuit
,specify
,describe
undcontext
:http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#fit-class_method http://rdoc.info/github/rspec/rspec-core/RSpec/Core/ExampleGroup#xit-class_method
Seien Sie sicher,
config.filter_run focus: true
undconfig.run_all_when_everything_filtered = true
in Ihrem zu habenspec_helper.rb
.quelle
In neueren Versionen von RSpec ist es noch einfacher, die Unterstützung zu konfigurieren
fit
:Sehen:
https://relishapp.com/rspec/rspec-core/docs/filtering/filter-run-when-matching
https://relishapp.com/rspec/rspec-core/v/3-7/docs/configuration/run-all-when-everything-filtered
quelle
Sie können auch Spezifikationen ausführen, die
focus: true
standardmäßig vorhanden sindspec / spec_helper.rb
Dann einfach laufen
und es wird nur ein fokussierter Test ausgeführt
Wenn Sie dann
focus: true
alle Tests entfernt haben, führen Sie sie erneut ausWeitere Informationen: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
quelle
spec/spec_helper.rb
immer enthalten? Oder nur wenn keine Optionen angegeben sind? Warum haben Testmodulerequire 'spec_helber'
die Möglichkeit, einen einzelnen Test durch Angabe der Datei auszuführen, und schließt der obige Code nicht aus? Ich kann keine Dokumentation dazu finden.spec_helper.rb
wenn Sie ist immer enthalten--require spec_helper
in.rspec
der Projektwurzel.Sie können als laufen
rspec spec/models/user_spec.rb -e "SomeContext won't run this"
.quelle