2011-10-12 14 views
10

Me gustaría ser capaz de mostrar un nombre de grupo de prueba (y ascendencia) durante el antes: Método:¿Cómo puedo acceder a los metadatos en rspec before (: all)?

describe "My awesome app" do 
    before(:all) do 
    puts running_example_group.metadata[:full_description] # <- what I'm imagining 
    ... 
    done 
    ... 
    describe "awesome widget" do 
    before (:all) do 
     puts running_example_group.metadata[:full_description] # <- what I'm imagining 
     ... 
    done 
    ... 
    done 
done 

La idea es que produciría la salida:

My awesome app 
My awesome app awesome widget 

(todos) Esta información está disponible dentro de las cláusulas "it", pero no puedo resolverlo antes (: todo). ¿No está disponible? ¿Estoy cometiendo un error tonto?

+0

¿https://github.com/rspec/rspec-core/issues/6 podría sugerir que la funcionalidad no existe? ¿O tal vez solo establecer los metadatos antes (: todo) era inviable? –

Respuesta

9

Dentro de un bloque before(:all), no hay un "ejemplo en ejecución", pero aún puede acceder a los metadatos a través del RSpec::Core::ExampleGroup. Aquí está un ejemplo de cómo se puede acceder a los metadatos de diversos ámbitos:

describe "My app", js: true do 

    context "with js set to #{metadata[:js]}" do 
    before :all do 
     puts "in before block: js is set to #{self.class.metadata[:js]}" 
    end 

    it "works" do 
     puts "in example: js is set to #{example.metadata[:js]}" 
    end 
    end 

end 

Para obtener más información, por favor, eche un vistazo a this comment in rspec/rspec-core#42.

+0

Cool. No estoy usando rspec en mi proyecto actual, por lo que si alguien más puede confirmar que esto funciona para ellos, entonces aceptaré la respuesta. –

+0

O ...;) simplemente podría guardar el ejemplo, ejecutar 'gem install rspec' y ejecutar la especificación mediante' rspec example_spec.rb'. – rubiii

+0

¡Hah! Lo intentaré. Tendré que tomar una computadora con Ruby instalado, pero creo que tengo una. Sin embargo, si termino jugando con mi entorno, puedo rendirme. =) –

Cuestiones relacionadas