Ich habe eine Testspezifikation, die describes
eine Klasse und innerhalb dieser verschiedene contexts
mit verschiedenen it
Blöcken hat.
Gibt es eine Möglichkeit, eine context
vorübergehend zu deaktivieren ?
Ich habe versucht, einen pending "temporarily disabled"
Anruf ganz oben innerhalb eines context
zu deaktivierenden Anrufs hinzuzufügen , und ich habe beim Ausführen der Spezifikation etwas über anstehend gesehen, aber dann wurden die restlichen Tests einfach fortgesetzt.
Das hatte ich irgendwie:
describe Something
context "some tests" do
it "should blah" do
true
end
end
context "some other tests" do
pending "temporarily disabled"
it "should do something destructive" do
blah
end
end
end
Aber wie gesagt, es wurden nur die Tests unter dem anstehenden Anruf ausgeführt.
Die Suche führte mich zu diesem Mailinglisten-Thread, in dem der Ersteller (?) Von rspec sagt, dass dies in rspec 2 möglich ist, das ich ausführe. Ich denke, es hat funktioniert, aber es hatte nicht den gewünschten Effekt, alle folgenden Tests zu deaktivieren. Daran denke ich, wenn ich einen pending
Anruf sehe .
Gibt es eine Alternative oder mache ich es falsch?
describe 'XXXXX' do .... end
describe 'XXXXX' do
. Hat wie ein Zauber funktioniert, danke @Pyro!Verwenden Sie Ausschlussfilter . Von dieser Seite: In Ihrem
spec_helper.rb
(oderrails_helper.rb
)In Ihrem Test:
Wenn ich "rspec ./spec/sample_spec.rb --format doc" ausführe
Dann sollte die Ausgabe "Gruppe 2 Beispiel 1" enthalten.
Und die Ausgabe sollte nicht "Gruppe 1 Beispiel 1" enthalten.
Und die Ausgabe sollte nicht "Gruppe 1 Beispiel 2" enthalten.
quelle
Sehen Sie, was Sie davon halten:
Ich möchte Gründe für meine ausstehenden Elemente sehen, wenn ich etwas für "eine Weile" deaktiviere. Sie dienen als kleine Kommentare / TODOs, die regelmäßig präsentiert werden, anstatt in einem Kommentar oder einem ausgeschlossenen Beispiel / einer ausgeschlossenen Datei vergraben zu sein.
Das Wechseln
it
zupending
oderxit
ist schnell und einfach, aber ich bevorzuge die Hash-Konstruktion. Es bietet Ihnen eine Dokumentation für jeden Lauf, ist ein Drop-In (ändert keine Beschreibung / Kontext / es, sodass ich später entscheiden muss, was ich erneut verwenden möchte) und kann genauso einfach entfernt werden, wenn die Entscheidung getroffen oder der Blocker entfernt wird .Dies funktioniert genauso für Gruppen und einzelne Beispiele.
quelle
pending:
undskip:
in rspec 3.6.0 funktioniert. Scheint mir die beste Lösung zu sein. In rspec3 werden ausstehende Tests weiterhin ausgeführt, dies jedochskip
nicht (wie auch immer Sie das anwendenskip
).noch einer. https://gist.github.com/1300152
Verwenden Sie xdescribe, xcontext, xit, um es zu deaktivieren.
Aktualisieren:
Seit rspec 2.11 enthält es standardmäßig xit. so wird der neue Code sein
Verwendung
quelle
Verwenden Sie ausstehend statt beschreiben. Wenn Ihr Block ist:
Sie können den gesamten Block überspringen, indem Sie:
quelle
quelle
Nur um zu erklären, was mit Ihrem Code passiert. Wenn Sie es dort einfügen, wo es vorhanden ist, wird es nur ausgewertet (und daher ausgeführt), wenn die Datei beim Start geladen wird. Sie müssen es jedoch ausführen, wenn die Tests ausgeführt werden. Aus diesem Grund haben die Antworten vorgeschlagen,
pending
(RSpec 2) oderskip
(RSpec 3) in einenbefore
Block zu setzen.quelle