mocking - simulacros - plan de simulacro de sismo
¿Hay alguna manera de hacer simulacros de captura de argumento en Spock (1)
Puede capturar un argumento de la siguiente manera:
// 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 == ...
Dicho esto, a menudo hay una solución más simple, como verificar el registro esperado a la derecha en la restricción del argumento (por ejemplo, ...doNetworkCall( { it == ... } )
).
He mirado a mi alrededor y he intentado cosas diferentes en vano. Los ejemplos que hay en las redes son pocos y, en mi opinión, bastante simples. Mi caso de uso:
(el ''itocNetworkHandler'' a continuación es el simulacro)
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
Me gustaría almacenar el parámetro (''it'') en el "doNetworkCall" en el simulacro.
La razón por la que quiero el parámetro es porque el objeto que estoy probando debe tomar mis parámetros, hacer cosas, crear un nuevo objeto y pasarlo a mi simulacro. Quiero asegurarme de que el objeto creado se vea como se supone.
Punteros muy apreciados.