繁体   English   中英

使用 mockk 验证构造函数 lambda

[英]Verify constructor lambda using mockk

我想验证 lambda 调用的调用次数。

此 lambda 用作回调以传递 state 更改。 我想限制 lambda 只能通过构造函数使用。

当 lambda 在构造函数参数中时,有什么方法可以测试这个?

尝试了以下方法,但这似乎不起作用。

class SampleTest {

    private lateinit var sut: Sample

    @Test
    fun `test lambda is called`() {
        val captureCallback = slot<(String) -> Unit>()
        every {
            sut = Sample(capture(captureCallback))
        } answers {
            captureCallback.captured("")
        }
        verify(exactly = 1) {
            captureCallback.captured("")
        }
    }
}

class Sample(val onClick: (String) -> Unit) {

    init {
        triggerLambda()
    }

    private fun triggerLambda() {
        onClick("")
    }
}

万一有人还在看这里,我是如何解决的

class SampleTest {

    private val callback: (String) -> Unit = mockk(relaxed = true)

    @Test
    fun `test lambda is called`() {
        Sample(callback)
        verify(exactly = 1) { callback.invoke("") }
    }
}

原始答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM