模拟验证lambda参数

时间:2018-12-24 09:30:59

标签: kotlin mockk

我想验证通过lamdba传递的值。 该功能看起来像这样:

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

现在,在我的测试中,我想验证为idSupplier传递的值。我做了一个模拟以返回save(...)的值,这样在我自己的save(...,()-> ...)中调用

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

现在验证我现在有这个

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

正在工作,但是我想知道已传递的确切值,即,如果实体的id为123,我想验证一下。

提前谢谢

1 个答案:

答案 0 :(得分:0)

您需要一个capturing the parameters插槽。

示例

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)