2010-04-15 16 views
7

¿Es posible que un método rspec obtenga el valor del parámetro pasado a él() en el método local? Por ejemplo, si quiero:rspec "it" cadena

describe Me do 
    it "should figure this out" 
    puts "I " + SPEC_NAME 
    end 
end 

para imprimir esta:

I should figure this out 

... ¿qué podría poner para SPEC_NAME en el ejemplo de código?

Mejor aún, ¿cómo podría una figura de rubología relativamente nueva como yo resolver esto por sí mismo?

Respuesta

7

El método description debe hacer lo que desee. p.ej.

describe Me do 
    it "should figure this out" do 
    puts "I " + description # or "I #{description}" using string interpolation 
    end 
end 

En cuanto a la forma de resolver esto, me encontré mirando en el RDocs for RSpec, empezando por mirar el origen del método it para ver cómo funciona. A continuación, encontrará que RSpec hace referencia a la cadena "it" como la "descripción" para que pueda buscar los métodos disponibles que incluyen la descripción en su nombre.

Sé que no es de mucha utilidad para usted en este momento, pero a medida que aprenda más Ruby le resultará más fácil leer el código en bibliotecas como RSpec y desarrollará un instinto de cómo es probable que se implementen, lo cual te ayudará a buscar en los lugares correctos para las cosas.

+0

¡Eso es perfecto, gracias! – lambinator

+1

Intenté con RSpec 2.8.0, pero no funcionó de inmediato. ¿Qué objeto se estaba ejecutando? Encontré: RSpec :: ExampleGroup :: Nested_2 (supongo que es ExampleGroup para usted) La solución para mí es: example.description – inger

+0

+1 para incluir instrucciones sobre cómo representar cosas como esta en la fuente/documentos. – ErJab

0

Esto no responde a su pregunta exactamente, pero si usted está tratando de imprimir cada prueba ya que se ejecuta, puso esto en su spec.opts archivo:
--format specdoc

He aquí un ejemplo de lo que ven mis pruebas como cuando las dirigen:

A new release when parsing the artist containing a full join word 
- should remove it 
- should not remove it when it is inter-word 

A new release when parsing the artist containing an abbreviated joining word 
- should remove it when there is a period after it 
- should remove it when when there is not a period after it 
- should not remove it when it is inter-word with a period after it 
- should not remove it when it is inter-word without a period after it 

A new release when parsing the artist 
- should be invalid if the year is not current 
- should be valid if it is the current year 
+0

No es exactamente lo que estaba buscando, ¡pero es un gran consejo, no obstante! – lambinator

1

con las versiones más recientes de RSpec (estoy usando 2.14), se puede hacer referencia a ella como example.description.

it "prints itself" do 
    puts "My description string is '#{example.description}'." 
end