2015-04-27 15 views
7

Ho 2 metodi di prova.Test di spock: pulizia dopo "dove:" termina il blocco

Tutti eseguono ogni riga del blocco where, ho bisogno di una pulizia per aggiungere metodi di relax &.

Ho provato il blocco di cleanup, void cleanup(), def cleanupSpec(), non adatto.

Come posso eseguire esplicitamente una pulizia dopo un metodo specifico che ha il blocco "dove:"?

def "Add"() { 
    setup : 
    expect : 
    where: 
    } 

def "Relax"() { 
    setup : 
    expect : 
    where:  
    } 
+0

Non è chiaro. Potresti fornire un esempio? – Opal

+0

non importa, ho appena messo un nuovo metodo tra 'add' e 'relax', chiamato 'addClean', e resettare tutto da lì. – Shay

+1

il mio metodo cleanup -> def "Aggiungi cleanup - not a test"() { ! Cache.clear() } – Shay

risposta

11

Si può avere un blocco di pulizia nel metodo in questo modo:

@Unroll 
def "a method that tests stuff"(){ 
    given: 
    def foo = fooDAO.save(new Foo(name: name)) 
    when: 
    def returned = fooDAO.get(foo.id) 
    then: 
    returned.properties == foo.properties 
    cleanup: 
    fooDAO.delete(foo.id) 
    where: 
    name << ['one', 'two'] 
} 

Il blocco "pulizia" otterrà eseguito una volta per test iterazione.

+1

Come ho scritto, l'ho provato, e ho bisogno di una pulizia una volta alla fine di tutte le iterazioni. – Shay

+0

È possibile che sia necessario @Segistrare il metodo in modo che possa essere pulito dopo ogni iterazione. – th3morg

3

Se si utilizza @Unroll, verrà chiamato cleanup: per ogni voce nel blocco where:. Per eseguire solo la pulizia una volta, quindi spostare il codice all'interno della chiusura def cleanupSpec().

@Shared 
def arrayOfIds = [] 

@Unroll 
def "a method that tests stuff"(){ 
    given: 
    def foo = fooDAO.save(new Foo(name: name)) 
when: 
    def returned = fooDAO.get(foo.id) 
    arrayOfIds << foo.id 
then: 
    returned.properties == foo.properties 
where: 
    name << ['one', 'two'] 
} 

def cleanupSpec() { 
    arrayOfIds.each { 
    fooDAO.delete(it) 
    } 
} 
Problemi correlati