Ice*_*Ice 4 android kotlin mockk
我spyk
从mockk
图书馆有:
my = spyk(My())
Run Code Online (Sandbox Code Playgroud)
后来我嘲笑其中一种返回类似内容的方法:
every { my.method("someString") } returns something
Run Code Online (Sandbox Code Playgroud)
我正在spyk
一个@BeforeAll
方法中创建它,并且我重复使用它几次,但是,有时我需要调用真实my.method("someString")
而不是模拟版本,但这every{}
在任何地方都嘲笑它。
my
在某些情况下如何强制调用真正的方法?有没有可能做到这一点?
V-m*_*ter 12
要调用原始方法,您可以使用带有 lambda 的答案中缀。这个 lambda 接收MockKAnswerScope
为this
,它包含方便的callOriginal()
方法
every { my.method("something") } answers { callOriginal() }
Run Code Online (Sandbox Code Playgroud)
例子:
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!"
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4902 次 |
最近记录: |