Proper Assert_Raise Unit Testen und Verwenden der Ausnahmeklasse

7

Ich arbeite an Übung 49 von Learn Ruby the Hard Way

Die Übung fordert Sie auf, einen Komponententest für jede bereitgestellte Funktion zu schreiben. Einer der Punkte, die ich testen, ist, ob eine richtige Ausnahme ausgelöst wird. Es wird vorgeschlagen, dass wir assert_raise für diesen Zweck verwenden.

Hier ist der Code, den ich gerade teste:

%Vor%

Und hier ist der Test für die Funktion parse_verb:

%Vor%

Wenn ich den Test ausführe, schlägt er fehl und hier ist die Nachricht, die ich bekomme:

%Vor%

Aufgrund meines Verständnisses der Funktion assert_raise sollte dieser Test bestanden werden, stimmt etwas mit der Art und Weise, wie ich es verwende, nicht?

Wenn jemand einen vollständigen Quellcode aller Dateien haben möchte, mit denen ich arbeite, ist hier

    
Andrew Lauer Barinov 04.09.2011, 00:06
quelle

2 Antworten

28

assert_raise erwartet eine oder mehrere Ausnahmeklassen als Parameter und nicht eine Instanz der erforderlichen Ausnahme.

Es gibt auch die Exception ausgelöst. Wenn Sie also die Nachricht (oder andere Eigenschaften) bestätigen wollen, können Sie das separat machen. Ersetzen Sie also:

%Vor%

mit:

%Vor%     
Steve 04.09.2011, 10:12
quelle
2

Aus irgendeinem Grund funktionierte die obige Antwort nicht für mich (ich benutze Ruby 2.0.0).

Ich muss den Error-Klassennamen in einen String einfügen, damit er funktioniert:

%Vor%     
Felipe Almeida 02.10.2013 02:36
quelle