Was ist die erwartete Syntax zum Überprüfen von Ausnahmemeldungen in MiniTests assert_raises
/ must_raise
?
Ich versuche, eine Aussage wie die folgende zu machen, wobei "Foo"
die erwartete Fehlermeldung angezeigt wird:
proc { bar.do_it }.must_raise RuntimeError.new("Foo")
Antworten:
Sie können die
assert_raises
Behauptung oder diemust_raise
Erwartung verwenden.Wenn Sie etwas an dem Fehlerobjekt testen müssen, können Sie es aus der Behauptung oder Erwartung wie folgt abrufen:
quelle
Minitest::Spec
und nichtMinitest::Test
. Das Spec DSL, einschließlich der Erwartungen, ist nur bei Verwendung verfügbarMinitest::Spec
.So behaupten Sie eine Ausnahme:
So bestätigen Sie eine Ausnahmemeldung:
Wie pro API doc ,
assert_raises
gibt die Ausnahme angepasst , so dass Sie die Nachricht überprüfen, Attribute, usw.quelle
Minitest bietet Ihnen (noch) keine Möglichkeit, die tatsächliche Ausnahmemeldung zu überprüfen. Sie können jedoch eine Hilfsmethode hinzufügen und die
ActiveSupport::TestCase
Klasse so erweitern, dass sie überall in Ihrer Rails-Testsuite verwendet werden kann, z. B.: Intest_helper.rb
und verwenden Sie es in Ihren Tests wie:
quelle
must_raise
da Sie die Fehlerinstanz erhalten, sodass Sie die Nachricht selbst überprüfen können.must_raise
.Um einige neuere Entwicklungen hinzuzufügen, gab es in der Vergangenheit einige Diskussionen über das Hinzufügen
assert_raises_with_message
zu Minitest ohne viel Glück.Derzeit gibt es eine vielversprechende Pull-Anfrage, die darauf wartet, zusammengeführt zu werden. Wenn und wann es zusammengeführt wird, können wir es verwenden,
assert_raises_with_message
ohne es selbst definieren zu müssen.In der Zwischenzeit gibt es dieses praktische kleine Juwel namens Minitest-Bonus-Assertions , das genau diese Methode definiert, zusammen mit einigen anderen, so dass Sie sie sofort verwenden können. Weitere Informationen finden Sie in den Dokumenten .
quelle