小编Bad*_*ler的帖子

如何捕获传递给模拟函数的参数并返回它?

所以在我正在测试的服务中,我有一个依赖服务,它接受一个对象并对其进行一些扩充。我想模拟依赖服务正在做的部分,并使模拟返回它所接收的内容。问题是我无权访问。

我试过这样的事情:

  val captureMyObject = slot<MyObject>()
  every { serviceX.doSomething(capture(captureMyObject)) } 
  returns captureMyObject.captured
Run Code Online (Sandbox Code Playgroud)

但它失败了: kotlin.UninitializedPropertyAccessException: lateinit property captured has not been initialized

kotlin mockk

10
推荐指数
1
解决办法
2839
查看次数

一次只嘲笑一个电话

我知道,为了模拟方法的响应方式,您必须使用

every { instanceX.methodB() } returns "42"
Run Code Online (Sandbox Code Playgroud)

我正在尝试模拟一个迭代器,为此您必须模拟2个方法hasNext()和next(),如果hasNext()返回true,则始终会有一个无限循环,如果从头开始返回false,则next()不会返回任何东西。

我的问题是:有没有一种方法可以像在嘲讽中那样用ockock一个个地模拟单个呼叫?我在文档中找不到任何内容。

unit-testing kotlin mockk

3
推荐指数
3
解决办法
1097
查看次数

标签 统计

kotlin ×2

mockk ×2

unit-testing ×1