2010-07-16 18 views
17

quiero usar las afirmaciones y poner valuidations en mi código de rubí (por ejemplo: comprobar si se crea un archivo zip, la etiqueta está presente, el mensaje en el área de texto, etc.). He puesto algunas declaraciones de aserción como assert @selenium.is_text_present(textMessage), pero que no funcionan.cómo poner las afirmaciones de código Ruby

Por favor, hágamelo saber si cualquier gema de rubíes de afirmaciones se va a instalar.

+2

Por favor, asegúrese de que ha leído el [Guía de formateo] (http://stackoverflow.com/editing-help), el aviso de que todos somos siempre amable, y por eso nos saltamos habitual partes "hi/gracias" de los mensajes, y - la bienvenida a Stackoverflow! –

+0

Creo que esto es similar - http://stackoverflow.com/questions/147969/is-it-idiomatic-ruby-to-add-an-assert-method-to-rubys-kernel-class – carrutherji

Respuesta

24

Para sencilla afirma, es probable que mejor fuera de rodar su propio método afirman tomar un bloque:

ruby-1.9.1-p378 > class AssertionError < RuntimeError 
ruby-1.9.1-p378 ?> end 
=> nil 
ruby-1.9.1-p378 > def assert &block 
ruby-1.9.1-p378 ?> raise AssertionError unless yield 
ruby-1.9.1-p378 ?> end 
=> nil 
ruby-1.9.1-p378 > assert { 1 > 0 } 
=> nil 
ruby-1.9.1-p378 > assert { 5 == 12 } 
AssertionError: AssertionError 
    from (irb):8:in `assert' 
    from (irb):11 
    from /Users/mr/.rvm/rubies/ruby-1.9.1-p378/bin/irb:17:in `<main>' 

En forma copypastastable:

class AssertionError < RuntimeError 
end 

def assert &block 
    raise AssertionError unless yield 
end 

i = 1 
assert {i >= 0} 
assert { 5 == 12 } 
+2

¿Hay alguna razón para usar un bloque como argumento en lugar de un simple booleano? –

+0

Si el método assert verifica alguna otra condición (por ejemplo, 'si DEBUG_ENABLED') antes de hacer el "raise ... unless yield", entonces si esa condición devuelve false, el rendimiento nunca será invocado, y por lo tanto el pass-in bloque nunca será evaluado. Si lo que hace el bloque es costoso, esto podría tener un gran efecto en el tiempo de ejecución del programa. –

Cuestiones relacionadas