gpt4 book ai didi

android - 如何验证特定的 lambda 方法是否已作为 mockito 的参数传递

转载 作者:行者123 更新时间:2023-11-29 18:58:33 24 4
gpt4 key购买 nike

我有一个 Kotlin 类(问题被简化为有一个基本示例),其中有一个方法 testedMethod() 我想测试交互。

我想确保将正确的参数传递给 anotherMethod(),我的问题是该参数不是一个,而是一个lambda 函数.

我正在寻找 Kotlin 中的一个简单解决方案,它可能基于也可能不基于 this solution for java .

class TestedClass {

fun testedMethod() {
anotherMethod({ passedMethod() })
}

fun passedMethod() {}

fun anotherMethod(lambdaParameter: () -> Unit) {
// Does something with lambdaParameter
}
}

最佳答案

这是我最终使用的解决方案。

基本上你创建了一个被测试类的spy来验证它自己的方法,你使用argumentCaptor来捕获传递的lambda并能够调用什么就在里面。

import com.nhaarman.mockito_kotlin.argumentCaptor
import com.nhaarman.mockito_kotlin.spy
import com.nhaarman.mockito_kotlin.verify

@Test
fun lambdaParameterPassedIsCorrect() {
val testedClass = TestedClass()
val spyOfTestedClass = spy(testedClass)

val captor = argumentCaptor<() -> Unit>()

spyOfTestedClass.testedMethod()

verify(spyOfTestedClass).anotherMethod(captor.capture())
// Invoke the function passed as a parameter
// and then verify that the expected method was called
val function = captor.firstValue
function.invoke()
verify(spyOfTestedClass).passedMethod()
}

我仍然对更简单的解决方案感兴趣。

关于android - 如何验证特定的 lambda 方法是否已作为 mockito 的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49454681/

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