gpt4 book ai didi

android - Mockk - spyk 模拟方法只有一次

转载 作者:行者123 更新时间:2023-12-02 12:31:05 36 4
gpt4 key购买 nike

我有 spyk来自 mockk图书馆:

my = spyk(My())

后来我 mock 一种方法来返回类似的东西:
every { my.method("someString") } returns something

我正在创建这个 spyk@BeforeAll方法,我重复使用了几次,但有时我需要调用真正的 my.method("someString")而不是模拟版本,但是这个 every{}到处 mock 它。

如何强制 my在某些情况下调用真正的方法?有没有可能这样做?

最佳答案

要调用原始方法,您可以使用带有 lambda 的答案中缀。此 lambda 接收 MockKAnswerScopethis它包含方便的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!"
}
}

关于android - Mockk - spyk 模拟方法只有一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148997/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com