[英]Mockk - spyk mock method only once
我有spyk
從mockk
庫:
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.