2010-08-31 9 views
6

Me estoy abriendo camino a través de EdgeCase RubyKoans (www.rubykoans.com) y estoy atascado en el método a partir de la línea 35 en about_methods.rb here. Running rake falla de manera predecible y me dice que mire la línea 36. Estoy razonablemente seguro de que tengo assert_match correcto ("0 por 2") pero no sé qué está fallando. Es muy posible que la línea assert_raise (___) tenga algo entre paréntesis, pero no tengo idea de lo que debería ser. ¿Algún consejo o empujoncito? Muchas gracias.pegado en about_methods.rb en EdgeCase Ruby Koans

edición: aquí está la breve fragmento de código erróneo:

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 

Respuesta

4
exception = assert_raise(___) do 

Se supone que debe sustituir los guiones bajos por el error que espera que se plantee. El error es un objeto, ¿qué tipo de objeto? Y lo que dijo zetetic, la expresión regular es incorrecta.

+0

¡Hah! ¡Lo tengo! ¡Muchas gracias! – jbfink

7

Prueba a eliminar las citas de la expresión regular:

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

+0

D'oh, sí, de hecho tuve la expresión regular sin comillas originalmente - ¡gracias por captar eso! – jbfink

0

Acabo de hacer la prueba,

Cuando expresiones regulares con paréntesis se supone que debes utilizar la barra invertida o se encontraría con nula.

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) 

final

o simplemente llenarlo con (o de 2) \

ambas palabras ~!

Cuestiones relacionadas