【问题标题】:Mockito: How to mock lambda callback? what is the type? (Kotlin)Mockito:如何模拟 lambda 回调?什么是类型? (科特林)
【发布时间】:2021-12-14 14:50:41
【问题描述】:

我有两个类TestTargetMockTarget 和下面的测试代码。如果TestTarget 有两个具有相同名称和相同参数计数的函数,则any() 是不明确的。我需要将类型分配给any(ClassType)。但是() -> Unit 的类型是什么?我试过Function0,但它不起作用。有人可以帮忙吗?

类测试目标:

Class TestTarget(private val mockTarget: MockTarget) {
     fun testFunction() {
          // some logic to be tested.
          // call mockTarget.doSomething.
     }
}

类模拟目标

Class MockTarget {
    fun doSomething(callback: () -> Unit) {
        // some logic here.
    }

    fun doSomething(listener: OtherType) {
        // Test code works without this function.
    }
}

测试代码:

// setup mocks.

@Test
fun `verify testFunction`() {
    `when`(mockTarget.doSomething(any())).thenAnswer { invocation ->
        // callback here.
    }
}

【问题讨论】:

    标签: kotlin mockito


    【解决方案1】:

    org.mockito.Mockito 替换为org.mockito.kotlin.* 你可以这样编码

    val anyLambda = any<() -> Unit>()
    val anyListener = any<OtherType>()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 2019-07-18
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2019-04-17
      相关资源
      最近更新 更多