2013-09-23 24 views
10

Desidero accedere alle variabili nelle clausole Given/Then/When. Come preservare le variabili in modo che siano accessibili ovunque?Mantieni la variabile in cetriolo?

Given(#something) do 
    foo = 123 # I want to preserve foo 
end 

Then(#something) do 
    # how to access foo at this point??? 
end 

risposta

15

Per condividere le variabili tra le definizioni di passaggi, è necessario utilizzare istanze o variabili globali.

Le variabili di istanza possono essere utilizzate quando è necessario condividere i dati tra le definizioni di passo ma solo per il test (ovvero le variabili vengono cancellate dopo ogni scenario). Le variabili di istanza iniziano con un @.

Given(#something) do 
    @foo = 123 
end 

Then(#something) do 
    p @foo 
    #=> 123 
end 

Se si desidera condividere una variabile in tutti gli scenari, è possibile utilizzare una variabile globale, che inizia con un $.

Given(#something) do 
    $foo = 123 
end 

Then(#something) do 
    p $foo 
    #=> 123 
end 

Nota: in genere si consiglia di non condividere le variabili tra passaggi/scenari durante la creazione dell'accoppiamento.

+0

Raccomando i valori di default '@foo || =: bar' dove è possibile in modo che il passaggio possa essere utilizzato senza l'altro passaggio. – Johannes