mockk проверить лямбда-аргумент - PullRequest
0 голосов
/ 24 декабря 2018

Я хотел бы проверить значение, переданное через lamdba.Функция выглядит следующим образом:

fun save(entity: Any, idSupplier: () -> UUID): JsonEntity {
    return save(JsonEntity(idSupplier(), entity, entity::class.simpleName!!))
}

Теперь в моем тесте я хочу проверить значение, переданное для idSupplier.Я сделал макет, чтобы вернуть значение для сохранения (...), которое вызывается в моем собственном сохранении (..., () -> ...) следующим образом

every { jsonStorage.save(any<JsonEntity>()) } answers { value }

Теперь при проверкеУ меня есть это сейчас

verify(exactly = 1) { jsonStorage.save(event, any()) }

, которое работает, но я хотел бы знать точное значение, которое было передано, то есть, если идентификатор сущности был 123, я хотел бы проверить это.

Заранее спасибо

1 Ответ

0 голосов
/ 24 декабря 2018

Вам нужен слот для захвата параметров .

Пример

val id = slot<UUID>()
every { save(any<JsonEntity>()) { capture(id)} } answers { value }

// `id.captured` contains the value passed 
// as a parameter in the lambda expression `idSupplier`

assertEquals(UUID.fromString("4195f789-2730-4f99-8b10-e5b9562210c1"), id.captured)
...