I have spyk
from mockk
图书馆:
my = spyk(My())
后来我嘲笑其中一种方法返回类似的内容:
every { my.method("someString") } returns something
我正在创建这个spyk
in a @BeforeAll
方法,我重复使用它几次,但是有时我需要调用 realmy.method("someString")
而不是模拟版本,但是这个every{}
到处嘲笑它。
如何强制my
在某些情况下调用真实方法?有可能这样做吗?
要调用原始方法,您可以将答案中缀与 lambda 一起使用。该 lambda 接收MockKAnswerScope
as this
它包含方便的callOriginal()
method
every { my.method("something") } answers { callOriginal() }
example:
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!"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)