2013-05-02 14 views
26

Mi sono guardato intorno e ho provato diverse cose senza successo. Gli esempi là fuori sugli interwebs sono pochi e IMHO è piuttosto semplice. Il mio caso d'uso:C'è un modo per fare l'argomento fittizio catturare in Spock

(la 'itocNetworkHandler' sotto è il mock)

when: "we're doing stuff" 
    StandardResponse response = cms.doCardStuff("123", "111", order) 
.... 
then: "we get proper calls and response object" 
    1 * cms.itocNetworkHandler.doNetworkCall(
      { it instanceof ReplacementRequestRecord 
      }, StandardResponseRecord.class) >> record 

vorrei riporre il parametro ('it') per il "doNetworkCall" sul finto.

La ragione per cui voglio il parametro è perché l'oggetto che sto testando deve prendere i miei parametri, fare cose, creare un nuovo oggetto e passare quello alla mia simulazione. Voglio assicurarmi che l'oggetto creato assuma il modo in cui è supposto.

Puntatori molto apprezzati.

+0

Perché vuoi archiviare l'argomento? Cosa farai con questo? –

+0

Ho chiarito sopra perché ne ho bisogno. – Mathias

risposta

35

è possibile catturare un argomento come segue:

// must be declared before when-block (or inside Specification.interaction {}) 
def captured 

when: 
... 

then: 
1 * mock.doNetworkCall(...) >> { record, recordClass -> 
    // save the argument 
    captured = record 
    ... 
} 
// use the saved argument 
captured == ... 

Detto questo, spesso c'è una soluzione più semplice, come il controllo del diritto di registrazione previsto nel vincolo argomento (per esempio ...doNetworkCall({ it == ... })).

+0

Grazie, funziona. Il motivo per cui non lo voglio in "it ==" ecc. È che voglio fare molti controlli, e penso che sia molto più ordinato avere tutti gli asseriti alla fine, se capisci cosa intendo. – Mathias

+0

È possibile inserire i controlli in un metodo di supporto e chiamare il metodo helper dal vincolo dell'argomento. –

+1

Sì, questa è una possibilità. Penso che mi piacciano alla fine però. Ci si sente un po '"subdoli" nel fare gli asserti all'interno del blocco parametri, per la leggibilità mi piacciono alla fine. O forse non sono abituato al gergo. – Mathias

Problemi correlati