I have looked around and tried different things to no avail. The examples out there on the interwebs are few, and IMHO pretty simple. My use case:
(the 'itocNetworkHandler' below is the 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
I would like to store away the parameter ('it') to the "doNetworkCall" on the mock.
The reason i want the parameter is because the object i'm testing is supposed to take my in parameters, do stuff, create a new object and pass that one to my mock. I want to make sure that the created object looks the way its supposed to.
Pointers much appreciated.
Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compatible with most IDEs, build tools, and continuous integration servers.
You can capture an argument as follows:
// 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 == ...
That said, often there is a simpler solution such as checking the expected record right in the argument constraint (e.g. ...doNetworkCall( { it == ... } )
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With