2

我正在测试一种方法。它两次请求模拟对象的相同功能,但传递的参数不同。自然,我需要两个不同的答案,但 mockk 给了我相同的答案。

every { userRepository.getUser("A") }.answers { userA }
every { userRepository.getUser("B") }.answers { userB }

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

4

1 回答 1

4

正如对问题的评论中所述,这可以通过指定参数来实现。

但是,如果条件涉及更多,则可以通过捕获槽来实现相同的目的。

例如,如果我们想42在用户 id 为时返回135否则:

val userSlot = slot<User>()
every { userRepository.saveUser(capture(userSlot)) } answers {
  if (userSlot.captured.id == 1) 42
  else 35
}
于 2020-08-07T08:44:50.410 回答