Wie Hänge ich eine Nachricht an rspec-check?
In rspec: Kann ich eine Nachricht Anhängen, um eine überprüfung der gleichen Weise, wie ich tun würde, im xUnit-Stil-test-frameworks? Wie?
assert_equal value1, value2, "something is wrong"
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollte
undshould_not
eine zweite argument (message
), der überschreibt die matcher Standard-Nachricht.Den Standard-Nachrichten sind in der Regel ziemlich nützlich, obwohl.
update:
für RSpec 3:
#should ==
?1.should(nil, 'one is not two!') == 2
(ick), aber das funktioniert, weil die==
Betreiber matcher wie es aussieht, erzeugt immer seine eigene Botschaft.eq
statt==
d.h.1.should eq(nil), 'one is not two!'
In RSpec, es ist der matcher job drucken eine sinnvolle Fehlermeldung. Die generische Matcher, dass Schiff mit RSpec können natürlich nur print-generic non-descript Fehlermeldungen, da Sie nicht wissen, etwas über Ihre jeweilige domain. Das ist, warum es wird empfohlen, dass Sie schreiben Sie Ihre eigene domain-spezifische Matcher, die wird Ihnen sowohl mehr lesbar tests und mehr lesbaren Fehlermeldungen.
Hier ein Beispiel aus der RSpec-Dokumentation:
Hinweis: nur
match
erforderlich ist, die andere wird automatisch generiert. Jedoch der springende Punkt, der deine Frage ist natürlich auch, dass Sie nicht wie die Standard-Nachrichten, so müssen Sie zumindest auch definierenfailure_message_for_should
.Können, können Sie auch definieren
match_for_should
undmatch_for_should_not
stattmatch
wenn Sie brauchen unterschiedliche Logik in der positiven und negativen Fall.Als @Chris Johnsen zeigt, können Sie auch explizit eine Nachricht an die Erwartung. Allerdings laufen Sie das Risiko des Verlustes der Lesbarkeit Vorteile.
Vergleichen:
mit dabei:
Das würde (in etwa) umgesetzt werden wie diese:
In meinem Fall war es ein problem der Klammer:
dies führte zu einer falschen Anzahl von Argumenten, während der richtige Weg ist:
.to be(true)
.