【问题标题】:Mockito in Spock [closed]Spock中的Mockito [关闭]
【发布时间】:2021-06-29 03:20:39
【问题描述】:

谁能告诉我,为什么这东西不相等?

service.getData(any(FindRequest.class), any(Some.class)) >> List.of(new FoundItem("One", new Answer(Map.of("Test", 3))))
Mockito.when(service.getData(any(FindRequest.class), any(Some.class))).thenReturn(List.of(new FoundItem("One", new Answer(Map.of("Test", 3)))))

使用 Mockito 模拟一切正常,但我需要它在 spock 上工作

【问题讨论】:

    标签: java groovy mockito spock


    【解决方案1】:

    请查看 Spock 的 argument constraints 语法,您将 Mockito 代码与 Spock 的模拟代码混合在一起,所以它不起作用。还 service 需要是 Spock 创建的模拟,而不是 Mockito 模拟。如果您想将 Mockito 与 Spock 一起使用,这是可能的,但您必须对所有内容都使用 Mockito,您不能将它们混合用于同一个模拟。

    这就是它在 Spock 语法中的样子,我还用列表和映射文字对响应进行了 groovyfied。

    service.getData(_ as FindRequest, _ as Some) >> [new FoundItem("One", new Answer(["Test": 3]))]

    如果您实际上不关心参数是否是某种类型的实例,那么您可以删除as Class 位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-06
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多