gpt4 book ai didi

kotlin - Mockk:延迟后如何模拟返回?

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

我需要模拟对某个类的调用,并使其花费一些时间。

当前代码使用以下代码:

every { useCase.execute(any()) } answers {
AnswersWithDelay(50000, DoesNothing.doesNothing())
}

现在,我正在更改 execute()以返回 Notification类的对象。
val notif = Notification(...)

但我不知道如何更改此模拟。
val answer: org.mockito.stubbing.Answer<Notification> = AdditionalAnswers.answer { invocation: InvocationOnMock -> notif }
val delayedAnswer = AdditionalAnswers.answersWithDelay(50000, { invocation: InvocationOnMock -> answer } )

我找不到如何使 answers { ... }可编译的方法。有小费吗?

最佳答案

Mockito和MockK API有点混乱,因为它们共享术语,但不兼容。 MockK的io.mockk.Answer与Mockito的org.mockito.stubbing.Answer不兼容,从那里开始,所有其他util类都不匹配。

因此,尽管它最初可能使用DoesNothing.doesNothing(),但由于返回类型为Unit / void,所以使用返回类型必须使用MockK的惯用方式创建该模拟。

所以我诉诸:

    val answerF = FunctionAnswer { Thread.sleep(50000); notif }
every { useCase.execute(any()) } .answers(answerF)

关于kotlin - Mockk:延迟后如何模拟返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61205689/

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