Подтвердить что ты не робот

Есть ли способ сделать фальсификацию аргументов в Споке

Я огляделся и пробовал разные вещи безрезультатно. Примеров там на переплетениях мало, а ИМХО довольно просто. Мой прецедент:

( "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" в макете.

Причина, по которой я хочу этот параметр, заключается в том, что объект, который я тестирую, должен принимать мои параметры, делать вещи, создавать новый объект и передавать его одному из моих макетов. Я хочу, чтобы созданный объект выглядел так, как предполагалось.

Указатели очень ценятся.

4b9b3361

Ответ 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 == ... } )).