Estaba leyendo en RSpec y estaba tratando de averiguar cómo se implementó el "debería" de RSpec.Metaprogramación de Ruby, ¿cómo funciona el "debería" RSpec?
¿Podría alguien dar una mano sobre cómo funciona la meta naturaleza de esta función?
El código se encuentra aquí:
http://github.com/dchelimsky/rspec/blob/master/lib/spec/expectations/extensions/kernel.rb
TIA,
-Daniel
Aclaración:
target.should == 5
¿Cómo el valor de destino van pasando junto a "debe ", que a su vez era" == "'d contra 5?
Gracias fo un pequeño gran explicación eso no solo responde la pregunta sino que es un buen resumen de algunos mecanismos en Ruby. Para las personas nuevas en Ruby, tenga en cuenta que la última expresión en una función es implícitamente el valor de retorno, por lo que debería ser superior en C++ Matcher * Kernel :: should() { return new Matcher (this); } –
@Andy Dent: gracias por el comentario positivo –
Primero: Muy buena respuesta, muchas gracias! Dos observaciones rápidas: en lugar de definir "debería" en el módulo Kernel, podría hacerlo en la clase Object. Lo encuentro más seguro, ya que es menos genérico. Lo segundo es que no necesitas metaprogramación para definir el método ==. Simplemente puede definirlo como cualquier otro método normal, para que sea más fácil de leer: def == (expected) –