2010-04-15 13 views
7

E 'possibile che un metodo rspec ottenga il valore del parametro passato ad esso() nel metodo locale? Ad esempio, se voglio:rspec "it" stringa

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

Per stampare questo:

I should figure this out 

... cosa avrei messo per SPEC_NAME nel codice di esempio?

Ancora meglio, come lo capirebbe un rubologo relativamente nuovo come me?

risposta

7

Il metodo description dovrebbe fare ciò che si desidera. per esempio.

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

In termini di come questo numero, l'ho trovato, cercando in RDocs for RSpec, a partire dal guardando il sorgente del metodo it per vedere come funziona. Scoprirai quindi che RSpec si riferisce alla stringa "it" come "descrizione", quindi puoi cercare i metodi disponibili che includono la descrizione nel loro nome.

io so che non è molto utile a voi in questo momento, ma come si impara di più di Ruby lo troverete più facile da leggere il codice in librerie come RSpec e svilupperà un istinto per il modo in cui sono suscettibili di essere attuate, che ti aiuterà a cercare nei posti giusti per le cose.

+0

Perfetto, grazie! – lambinator

+1

Ho provato con RSpec 2.8.0, ma non ha funzionato immediatamente. Su quale oggetto stava andando? Ho trovato: RSpec :: ExampleGroup :: Nested_2 (Immagino che sia ExampleGroup per te) La soluzione per me è: example.description – inger

+0

+1 per includere le istruzioni su come capire cose come questa dalla fonte/documenti. – ErJab

0

Questo non risponde alla tua domanda esattamente, ma se si sta cercando di visualizzare ogni test durante l'esecuzione, mettere questo nel vostro file di spec.opts:
--format specdoc

Ecco un esempio di quello che i miei test guardano come quando li ho eseguito:

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

Non proprio quello che stavo cercando, ma comunque ottimo suggerimento! – lambinator

1

Con le versioni più recenti di RSpec (sto usando 2.14), è possibile fare riferimento ad esso come example.description.

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