【问题标题】:how to return two different mocks from same function depending on passed parameters in mockk?如何根据mock中传递的参数从同一个函数返回两个不同的模拟?
【发布时间】:2018-11-30 01:56:42
【问题描述】:

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

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

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

【问题讨论】:

  • 你能发布更多的测试和实现代码吗?如果您所做的只是返回值,您也可以使用返回而不是答案。
  • 我的存根设置不正确。我上面写的代码就像一个魅力。

标签: android kotlin testing mockk


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-22
    • 2019-08-16
    • 2022-08-05
    • 1970-01-01
    • 2017-03-25
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多