2010-08-31 5 views
6

Ich hacking meinen Weg durch die EdgeCase RubyKoans (www.rubykoans.com) und bin auf der Methode ab Zeile 35 in about_methods.rb here stecken. Das Ausführen von Rake schlägt vorhersagbar fehl und fordert mich auf, Zeile 36 zu betrachten. Ich bin mir ziemlich sicher, dass das assert_match korrekt ist ("0 für 2"), aber ich weiß nicht, was fehlschlägt. Es ist sehr gut möglich, dass die Zeile assert_raise (___) etwas zwischen den Klammern hat, aber ich habe keine Ahnung, was das sein soll. Irgendwelche Hinweise oder Stupser? Vielen Dank.stecken auf about_methods.rb auf dem EdgeCase Ruby Koans

edit: hier ist der kurze Ausschnitt aus problematischen Code:

def my_global_method(a,b) 
a + b 
end 

-snip-

def test_calling_global_methods_with_wrong_number_of_arguments 
exception = assert_raise(___) do 
    my_global_method 
end 
assert_match(/"0 for 2"/, exception.message) 

exception = assert_raise(___) do 
    my_global_method(1,2,3) 
end 
assert_match(/__/, exception.message) 
end 

Antwort

4
exception = assert_raise(___) do 

Sie sollten die Unterstriche durch den Fehler ersetzen, den Sie erwarten. Der Fehler ist ein Objekt - welche Art von Objekt? Und was Zetetic sagte, ist die Regex falsch.

+0

Hah! Ich habs! Vielen Dank! – jbfink

7

Versuchen Sie, die Zitate aus dem Regex entfernen:

assert_match(/0 for 2/, exception.message)

+0

D'oh, ja, ich hatte tatsächlich die Regex ohne Anführungszeichen ursprünglich - danke für das fangen! – jbfink

0

Ich habe gerade den Test, sind

Wenn regex mit Klammern Sie soll den umgekehrten Schrägstrich verwenden, oder Sie würde gleich Null entsprechen.

def test_calling_global_methods_with_wrong_number_of_arguments 
exception = assert_raise(ArgumentError) do 
    my_global_method 
end 
assert_match(/wrong number of arguments \(0 for 2\)/, exception.message) 

exception = assert_raise(___) do 
    my_global_method(1,2,3) 
end 
assert_match(/__/, exception.message) 

Ende

oder füllen sie nur mit (o 2) \

beide Wörter ~!

Verwandte Themen