如何根据传入的参数在同一个函数中返回两个不同的模拟?

时间:2018-11-30 01:56:43

标签: android junit kotlin mockk

我正在测试一种方法。 它两次请求模拟对象的相同功能,但传递了不同的参数。自然,我需要两个不同的答案,但是ockock给我的答案都是相同的。 every { userRepository.getUser("A") }.answers { userA } every { userRepository.getUser("B") }.answers { userB }

如何使用Mockk获得两个不同的结果?

1 个答案:

答案 0 :(得分:1)

如对问题的评论中所述,只需指定参数即可实现。

但是,如果条件更加复杂,则可以通过捕获插槽来实现同一目的。

例如,如果我们想返回42且用户ID为1,否则返回35,则返回

val userSlot = slot<User>()
every { userRepository.saveUser(capture(userSlot)) } answers {
  if (userSlot.captured.id == 1) 42
  else 35
}