2012-04-20 17 views
5

Sto lavorando con un set molto grande di funzioni di cetriolo già esistenti e aggiungendo ulteriori test. Per questi nuovi test sto anche cercando di utilizzare le trasformazioni per semplificare le attività ripetitive.Scoping una trasformazione in cetriolo

Come posso aggiungere una trasformazione senza interrompere i test già esistenti? Ho già aggiunto il contesto al gruppo di acquisizione, ma dal momento che il contesto proviene dallo stesso dominio aziendale dei test preesistenti, può facilmente finire con la corrispondenza.

C'è un modo per applicare solo una trasformazione a determinati passaggi?

risposta

2

È possibile utilizzare un tag e un filtro Before per impostare una variabile di istanza nel mondo. Questo è quindi disponibile per la trasformazione in modo che possa eseguire trasformazioni specifiche del tag. Ad esempio, se si voleva solo per trasformare interi quando il tag @hook è presente:

Transform /(\d+)/ do |num| 
    if @hook 
    num.to_i 
    else 
    num 
    end 
end 

Before('@hook') do 
    @hook = true 
end 

un nuovo mondo viene creato per ogni scenario e la Prima filtri sono chiamati. Quindi @hook verrà ripristinato per ogni scenario.

+0

Idea interessante, ma ora i file di funzionalità dovrebbero essere a conoscenza delle trasformazioni, quando è veramente la definizione del passo che interessa a –

+0

@Chris Sì, suppongo di non aver risposto alla tua * vera * domanda sull'applicazione della trasformazione solo a determinate passi. Hai detto che sono test aggiuntivi, quindi ho pensato che fossero nuovi scenari. – graza

+0

Grazie, questo potrebbe essere il migliore possibile al momento! –