2010-08-31 61 views
6

我正在通過EdgeCase RubyKoans(www.rubykoans.com)黑客入侵,並且卡在about_methods.rb here的第35行開始的方法。運行rake失敗可預測,並告訴我看看第36行。我確信我有assert_match正確(「0 for 2」),但我不知道什麼是失敗。 assert_raise(___)行應該在括號中間有一些內容,但我不知道應該是什麼。任何提示或輕推?非常感謝。被困在EdgeCase上的about_methods.rb Ruby Koans

編輯:這裏有問題的代碼的短片斷:

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 

回答

4
exception = assert_raise(___) do 

你應該用你期望提出的錯誤替換下劃線。錯誤是一個對象 - 什麼樣的對象? 什麼zetetic說,正則表達式是不正確的。

+0

哈!得到它了!非常感謝! – jbfink 2010-08-31 22:35:21

7

嘗試從正則表達式去掉引號:

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

+0

噢,是的,我其實確實有最初沒有引號的正則表達式 - 感謝您的支持! – jbfink 2010-08-31 22:35:05

0

我只是做了測試,

在使用括號正則表達式你應該使用反斜槓或者你會滿足零。

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) 

或只是(O 2)填充\

兩個單詞〜!