10

我想验证通过 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,我想验证这一点。

先感谢您

4

1 回答 1

8

您需要一个 Slot 来捕获参数

例子

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)
于 2018-12-24T13:21:39.477 回答