2011-10-12 18 views
10

Vorrei essere in grado di visualizzare un nome gruppo di prova (e discendenza) durante la prima (: all) Metodo:Come posso accedere ai metadati in rspec prima (: tutti)?

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 

L'idea è che produrrebbe l'output:

My awesome app 
My awesome app awesome widget 

Questi dati sono disponibili all'interno delle clausole "it", ma non riesco a capirlo prima (: tutti). Non è disponibile? Sto solo facendo un errore stupido?

+0

https://github.com/rspec/rspec-core/issues/6 potrebbe suggerire che la funzionalità non esiste? O forse l'impostazione dei metadati in precedenza (: all) era impossibile? –

risposta

9

All'interno di un blocco before(:all), non esiste un "esempio in esecuzione", ma è comunque possibile accedere ai metadati tramite RSpec::Core::ExampleGroup. Ecco un esempio di come è possibile accedere al metadati da vari ambiti:

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 

Per ulteriori informazioni, si prega di dare un'occhiata a this comment in rspec/rspec-core#42.

+0

Freddo. Non sto usando rspec sul mio progetto attuale, quindi se qualcun altro può confermare questo funziona per loro quindi accetterò la risposta. –

+0

Oppure ...;) puoi semplicemente salvare l'esempio, eseguire 'gem install rspec' ed eseguire la specifica tramite' rspec example_spec.rb'. – rubiii

+0

Hah! Ci proverò. Avrò bisogno di prendere un computer con Ruby installato, ma penso di averne uno. Se finisco per rinunciare al mio ambiente, potrei rinunciare comunque. =) –

Problemi correlati