簡體   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