2013-12-12 8 views
5

Conoscere con Cucumber, è possibile definire le variabili di istanza durante una definizione di passo specificata. Questa variabile di istanza diventa parte dell'ambito World. Quindi è possibile accedere a questa variabile di istanza durante la definizione dei passaggi di Quando e Poi.È possibile definire le variabili di istanza durante le definizioni di Cetriolo Dato, Quando e Poi passo

È possibile definire le variabili di istanza anche durante le definizioni di passaggio Quando e Poi e accedervi nelle definizioni di passaggio Quando e Poi successive?

Se è possibile, è anche una pratica comune definire le variabili di istanza durante le definizioni di passaggio di Quando e Poi ?

Grazie.

risposta

6

Sì, è possibile impostare variabili di istanza durante qualsiasi tipo di passaggio.

Ad esempio, data la funzione:

Feature: Instance variables 

Scenario: Set instance variables during all steps 
    Given a given step sets the instance variable to "1" 
    Then the instance variable should be "1" 
    When a when step sets the instance variable to "2" 
    Then the instance variable should be "2" 
    Then a then step sets the instance variable to "3" 
    Then the instance variable should be "3" 

e le definizioni step:

Given /a given step sets the instance variable to "(.*)"/ do |value| 
    @your_variable = value 
end 
When /a when step sets the instance variable to "(.*)"/ do |value| 
    @your_variable = value 
end 
Then /a then step sets the instance variable to "(.*)"/ do |value| 
    @your_variable = value 
end 
Then /the instance variable should be "(.*)"/ do |value| 
    @your_variable.should == value 
end 

vedrete che lo scenario passa, il che significa che il momento e poi passi sono stati impostazione con successo la variabile di istanza.

Infatti, il Dato, Quando e Allora sono solo alias l'uno dell'altro. Solo perché hai definito una definizione di passaggio come "Data", può ancora essere chiamata "Quando" o "Allora". Ad esempio, lo scenario di cui sopra sarà ancora passare se le definizioni step utilizzati sono stati:

Then /a (\w+) step sets the instance variable to "(.*)"/ do |type, value| 
    @your_variable = value 
end 
Then /the instance variable should be "(.*)"/ do |value| 
    @your_variable.should == value 
end 

Si noti che il primo "Allora" definizione passo può essere utilizzato dal "Data" e "Quando" nello scenario.

Se è buona norma impostare le variabili di istanza in quando e quindi i passaggi, non è peggio che eseguirlo in determinati passaggi. Idealmente, nessuno dei tuoi passi userebbe variabili di istanza durante la creazione dell'accoppiamento di fasi. Ma, praticamente, non ho incontrato problemi significativi usando le variabili di istanza.

+0

La tua risposta mi ha aiutato molto. Tuttavia, ora sto pensando: c'è un modo per controllare l'ultimo valore calcolato da un passo? Voglio dire, invece di avere i passaggi "accoppiati" facendo riferimento a una variabile di istanza comune, potremmo semplicemente controllare il "last_value" del passaggio precedente? C'è un modo per farlo? –

+0

@KeillRandor, non conosco un modo per farlo. Non è qualcosa che ho sentito di qualcuno, quindi probabilmente richiederebbe una modifica del framework. –

+0

Ok, ho capito. Lo sto facendo impostando variabili di istanza, quindi grazie! –

Problemi correlati