Ond*_*žka 6 mocking kotlin mockk
我需要模拟对某个课程的调用,并使其需要一些时间。
当前的代码使用这个:
every { useCase.execute(any()) } answers {
AnswersWithDelay(50000, DoesNothing.doesNothing())
}
Run Code Online (Sandbox Code Playgroud)
现在我正在更改execute()以返回类的对象Notification。
val notif = Notification(...)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何改变这个模拟。
val answer: org.mockito.stubbing.Answer<Notification> = AdditionalAnswers.answer { invocation: InvocationOnMock -> notif }
val delayedAnswer = AdditionalAnswers.answersWithDelay(50000, { invocation: InvocationOnMock -> answer } )
Run Code Online (Sandbox Code Playgroud)
我找不到如何进行answers { ... }编译。有小费吗?
Mockito 和 MockK API 有点令人困惑,因为它们共享术语,但不兼容。MockKio.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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4635 次 |
| 最近记录: |