mockito with scala:匹配器问题

mockito with scala: matchers issue

我模拟了一个服务。服务有一个方法 'action' 接受一个 MyCustomObject 类型的对象和 return 一个 Either 的 Future。所以要嘲笑:

when(myService.action(any[MyCustomObject]())).thenReturn(any[Future[Any]]())

我在概念上看不出任何问题。我告诉 mockito 模拟方法操作,这样无论何时使用 MyCustomObject 类型的任何对象调用它,然后将其 return 设为 Any 的 Future 因为我不关心 Future 中的值。

但它给我错误:

When using matchers, all arguments have to be provided by matchers.

我的两个模拟值本质上都是通用的,那么这个错误的原因是什么?

使用 Mockito 时,不能在 thenReturn 中传递 matcher:模拟的目的是定义任意 return 值。

从概念上讲,Mockito 可能会为简单类型生成一些随机数据,但是您如何期望 Mockito 为它根本不知道的类型生成数据并且可能只接受一些特定值?

TL;DR:您必须提供 return 值:

when(myService.action(any[MyCustomObject]()))
  .thenReturn(Future.succesfull(Right(something)))