gpt4 book ai didi

java - Kotlin lambda 回调的单元测试

转载 作者:IT老高 更新时间:2023-10-28 13:35:54 25 4
gpt4 key购买 nike

假设我们有以下功能要测试

fun loadData(dataId: Long, completion: (JsonElement?, Exception?) -> Unit) {
underlayingApi.post(url = "some/rest/url",
completion = { rawResult, exception ->
val processedResult = processJson(rawResult)
completion(processedResult, exception)
})
}

我很清楚如何模拟、注入(inject)、 stub 和验证对 underlayingApi 的调用。

如何验证通过 completion(processedResult, exception)返回的结果?

最佳答案

要测试 lambdas 行为,必须模拟 underlayingApi,其中通过 InvoactionOnMock 对象调用 lambda。

    `when`(underlayingApi.post(eq("some/rest/url"),
any())).thenAnswer {
val argument = it.arguments[1]
val completion = argument as ((rawResult: String?, exception: Exception?) -> Unit)
completion.invoke("result", null)
}

这导致在被测对象内调用回调。现在检查被测对象的回调是否正常工作。

    objUnderTest.loadData(id,
{ json, exception ->
assert....
})

关于java - Kotlin lambda 回调的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com