簡體   English   中英

Mockk - spyk 模擬方法僅一次

[英]Mockk - spyk mock method only once

我有spykmockk庫:

my = spyk(My())

后來我嘲笑其中一種返回類似內容的方法:

every { my.method("someString") } returns something

我在@BeforeAll方法中創建這個spyk並且我重復使用它幾次但是,有時我需要調用真正的my.method("someString")而不是my.method("someString")版本,但是這個every{}到處都嘲笑它。

在某些情況下如何強制my調用真正的方法? 有沒有可能做到這一點?

要調用原始方法,您可以使用帶有 lambda 的答案中綴。 這個 lambda 接收MockKAnswerScope作為this ,它包含方便的callOriginal()方法

every { my.method("something") } answers { callOriginal() }

例子:

class ExampleUnitTest {

    private val my = spyk(My())

    @Test
    fun test() {
        val something = "Something"

        every { my.method("something") } returns something
        // now method will return specific value stated above
        assertEquals(something, my.method("something"))

        every { my.method("something") } answers { callOriginal() }
        // now method will call original code
        assertEquals("My something is FUN!", my.method("something"))
    }
}

class My {
    fun method(item: String): String {
        return "My $item is FUN!"
    }
}

暫無
暫無

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

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