如何用Mockk模拟返回值类的Kotlin函数类型?

qacovj5a  于 2022-11-25  发布在  Kotlin
关注(0)|答案(1)|浏览(185)

我有一个测试主题,它在构造函数中使用函数类型:

class PricedStockListLoader(
    val stock: Stock,
    val pricing: (Item) -> Price?
)

在我的测试中,我可以模拟这两种依赖关系:

val stock: Stock = mockk()
val pricing: (Item) -> Price? = mockk()
val loader = PricedStockListLoader(stock, pricing)

并指定对stock的期望

every { stock.stockList(sameDayAsLastModified) } returns Success(stockList)

但如果我尝试指定pricing的期望

every { pricing.invoke(anItem) } returns Price(666)

那一行(指定期望的那一行)永远不会返回,停留在Object.wait中JUnit内的某个地方。
我可以模拟返回值类的函数类型吗?

yeotifhr

yeotifhr1#

与模拟内联类相关的问题。
最小、可重现示例:

@JvmInline
value class Foo(val bar: String)

val f: () -> Foo = mockk()

@Test
fun `test value`() {
    every { f.invoke() } returns Foo("test")
    f.invoke()
}

相关问题