Ich denke, es gibt eine Möglichkeit, nur Tests mit einem bestimmten Label durchzuführen. Weiß jemand Bescheid?
Ich denke, es gibt eine Möglichkeit, nur Tests mit einem bestimmten Label durchzuführen. Weiß jemand Bescheid?
Antworten:
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 :
rspec spec/models/user_spec.rb -e "User is admin"
Ich benutze das am meisten.
In Ihrem spec_helper.rb
:
RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true
end
und dann auf Ihre Spezifikationen:
it 'can do so and so', focus: true do
# This is the only test that will run
end
Sie können Tests auch mit 'fit' fokussieren oder mit 'xit' ausschließen, wie folgt:
fit 'can do so and so' do
# This is the only test that will run
end
config.filter_run_when_matching
und es könnte funktionieren, indem man einfach :focus
zum Beispiel hinzufügt
Sie können auch mehrere Zeilennummern mit einem Doppelpunkt verbinden:
$ rspec ./spec/models/company_spec.rb:81:82:83:103
Ausgabe:
Run options: include {:locations=>{"./spec/models/company_spec.rb"=>[81, 82, 83, 103]}}
Ab RSpec 2.4 (ich glaube) können Sie einen prepend f
oder x
zu it
, specify
, describe
und context
:
fit 'run only this example' do ... end
xit 'do not run this example' do ... end
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
und config.run_all_when_everything_filtered = true
in Ihrem zu haben spec_helper.rb
.
In neueren Versionen von RSpec ist es noch einfacher, die Unterstützung zu konfigurieren fit
:
# spec_helper.rb
# PREFERRED
RSpec.configure do |c|
c.filter_run_when_matching :focus
end
# DEPRECATED
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
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
Sie können auch Spezifikationen ausführen, die focus: true
standardmäßig vorhanden sind
spec / spec_helper.rb
RSpec.configure do |c|
c.filter_run focus: true
c.run_all_when_everything_filtered = true
end
Dann einfach laufen
$ rspec
und es wird nur ein fokussierter Test ausgeführt
Wenn Sie dann focus: true
alle Tests entfernt haben, führen Sie sie erneut aus
Weitere Informationen: https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/filtering/inclusion-filters
spec/spec_helper.rb
immer enthalten? Oder nur wenn keine Optionen angegeben sind? Warum haben Testmodule require '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"
.