mockk 验证 lambda 参数
mockk verify lambda argument
我想验证通过 lamdba 传入的值。
函数看起来像这样:
fun save(entity: Any, idSupplier: () -> UUID): JsonEntity {
return save(JsonEntity(idSupplier(), entity, entity::class.simpleName!!))
}
现在,在我的测试中,我想验证为 idSupplier 传入的值。我模拟了 return save(...) 的值,它在我自己的 save(..., () -> ...) 中调用,就像这样
every { jsonStorage.save(any<JsonEntity>()) } answers { value }
现在验证我现在有这个
verify(exactly = 1) { jsonStorage.save(event, any()) }
这是有效的,但我想知道传递的确切值,即如果实体的 ID 是 123,我想验证一下。
提前致谢
您需要 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)
我想验证通过 lamdba 传入的值。 函数看起来像这样:
fun save(entity: Any, idSupplier: () -> UUID): JsonEntity {
return save(JsonEntity(idSupplier(), entity, entity::class.simpleName!!))
}
现在,在我的测试中,我想验证为 idSupplier 传入的值。我模拟了 return save(...) 的值,它在我自己的 save(..., () -> ...) 中调用,就像这样
every { jsonStorage.save(any<JsonEntity>()) } answers { value }
现在验证我现在有这个
verify(exactly = 1) { jsonStorage.save(event, any()) }
这是有效的,但我想知道传递的确切值,即如果实体的 ID 是 123,我想验证一下。
提前致谢
您需要 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)