簡體   English   中英

Mockk Mocking Kotlin 的私有財產

[英]Mockk Mocking Private Properties in Kotlin

我有一個帶有私有字段的簡單 class 。

class EmployeeData {

    private var employeeAge: Int = 0
    
    fun getAge(): Int {
        return 1 + employeeAge
    }
}

我正在嘗試使用官方文檔中的以下內容來測試這個私人employeeAge年齡

@Test
fun testPrivateAge() {

    val mock = spyk(EmployeeData())

    every {
        mock getProperty "employeeAge"
    } propertyType Int::class answers { fieldValue + 6 }
    every {
        mock setProperty "employeeAge" value any<Int>()
    } propertyType Int::class answers  { fieldValue += value }


    every { mock getProperty "employeeAge" } returns 33
    every { mock setProperty "employeeAge" value less(5) } just Runs

    assertEquals(10,mock.getAge())
}

我從 MockK 收到這樣的異常

io.mockk.MockKException: Missing calls inside every { ... } block.

at io.mockk.impl.recording.states.StubbingState.checkMissingCalls(StubbingState.kt:14)
at io.mockk.impl.recording.states.StubbingState.recordingDone(StubbingState.kt:8)

關於我做錯了什么的任何線索? 官方文檔建議對私有財產使用這種技術,但對我來說它不起作用,我正在使用最新版本的 MockK,即v1.10.0

盡管對於私有方法,它的工作原理很吸引人。 我能夠在這個邏輯中測試私有方法。

這是一些 Kotlin 優化的問題。 根據 MockK 作者“簡要說明。幾乎不可能模擬私有屬性,因為它們沒有附加 getter 方法。這是一種 Kotlin 優化,解決方案是重大變化。”

可以在這些 2 Github 問題上找到更多信息:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM