加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Kotlin lambda回调的单元测试

发布时间:2020-12-15 03:09:15 所属栏目:Java 来源:网络整理
导读:假设我们有以下功能来测试 fun loadData(dataId: Long,completion: (JsonElement?,Exception?) - Unit) { underlayingApi.post(url = "some/rest/url",completion = { rawResult,exception - val processedResult = processJson(rawResult) completion(proce
假设我们有以下功能来测试
fun loadData(dataId: Long,completion: (JsonElement?,Exception?) -> Unit) {
    underlayingApi.post(url = "some/rest/url",completion = { rawResult,exception ->
                val processedResult = processJson(rawResult)
                completion(processedResult,exception)
            })
}

我很清楚如何模拟,注入,存根和验证对underlayingApi的调用.

如何验证通过完成返回的结果(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....
                          })

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读