2010-08-31 12 views
6

Mi sto infilando attraverso EdgeCase RubyKoans (www.rubykoans.com) e sono bloccato sul metodo a partire dalla riga 35 in about_methods.rb here. Il rake in esecuzione fallisce prevedibilmente e mi dice di guardare la riga 36. Sono abbastanza sicuro di avere il assert_match corretto ("0 per 2") ma non so che cosa non sta funzionando. È molto probabile che la linea assert_raise (___) abbia qualcosa tra parentesi, ma non ho idea di cosa dovrebbe essere. Qualche suggerimento o nudge? Grazie mille.bloccato su about_methods.rb su EdgeCase Ruby Koans

edit: ecco il breve frammento di codice incriminato:

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 

risposta

4
exception = assert_raise(___) do 

Si suppone di sostituire i caratteri di sottolineatura con l'errore che si prevede di generare. L'errore è un oggetto - che tipo di oggetto? E quello che dice zetetic, la regex è errata.

+0

Hah! Fatto! Grazie mille! – jbfink

7

Provare a rimuovere le virgolette dalla regex:

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

+0

D'oh, sì, in realtà avevo la regex senza virgolette in origine - grazie per averlo capito! – jbfink

0

ho appena fatto il test,

Quando regex con parentesi si suppone di utilizzare la barra rovesciata o che ci si incontrano zero.

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) 

fine

o semplicemente riempire con (o per 2) \

entrambe le parole ~!

Problemi correlati