【问题标题】:mockito with scala: matchers issue带有 scala 的 mockito:匹配器问题
【发布时间】:2022-01-23 02:05:02
【问题描述】:

我嘲笑了一项服务。服务有一个方法'action',它接受一个MyCustomObject类型的对象并返回一个Future of Either。所以模拟一下:

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

我在概念上没有看到任何问题。我告诉 mockito 来模拟方法操作,这样每当它被任何类型为 MyCustomObject 的对象调用时,然后让它返回 Any 的 Future,因为我不关心 Future 中的值。

但它给了我错误:

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

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

【问题讨论】:

    标签: scala mockito


    【解决方案1】:

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

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

    TL;DR:你必须提供一个返回值:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多