簡體   English   中英

如何使用 Mockk 模擬 Kotlin function 類型返回值 class?

[英]How do I mock a Kotlin function type returning a value class with Mockk?

我有一個在其構造函數中采用 function 類型的測試對象:

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 上。等待 JUnit 內的某個地方。

我可以模擬 function 類型返回值類嗎?

與 mocking 內聯類相關的問題。

最小的,可重現的例子:

@JvmInline
value class Foo(val bar: String)

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM