Есть ли способ сделать фальсификацию аргументов в Споке
Я огляделся и пробовал разные вещи безрезультатно. Примеров там на переплетениях мало, а ИМХО довольно просто. Мой прецедент:
( "itocNetworkHandler" ниже - макет)
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
Я хотел бы сохранить параметр ('it') в "doNetworkCall" в макете.
Причина, по которой я хочу этот параметр, заключается в том, что объект, который я тестирую, должен принимать мои параметры, делать вещи, создавать новый объект и передавать его одному из моих макетов. Я хочу, чтобы созданный объект выглядел так, как предполагалось.
Указатели очень ценятся.
Ответы
Ответ 1
Вы можете записать аргумент следующим образом:
// 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 == ...
Тем не менее, часто существует более простое решение, такое как проверка ожидаемой записи в ограничении аргумента (например, ...doNetworkCall( { it == ... } )
).