使用Stream制作的变量进行测试方法.躲猫猫()



我已经设置了一个 Mockito 测试类来测试使用 Java 8 Streams 生成变量的方法。本质上,它是一个具有isDeleted属性的对象(currentTr)的集合。这是生成该变量的行。

FPTR = Stream.of(currentTR)
        .peek(CMService::markAsDeleted)
        .collect(Collectors.toSet();

正常运行时,它运行良好。该集合中的对象设置为已删除。

问题是当我运行测试用例时,此变量不包含任何设置为删除的对象(换句话说,似乎从未调用peek()或指定的方法(markAsDeleted)。

我想过使用 when().thenCallRealMethod() 但是,鉴于markAsDeleted是一种无效方法,我收到一个错误,也不允许我这样做。错误是:

when(cmservice.markAsDeleted(anyObject())).thenCallRealMethod();

Java:"此处不允许使用void"类型

我在测试领域模拟了CMService:

@Mock
CMService cmservice;

有没有办法在.peek()中触发方法调用,以便我得到正确的变量,还是设置问题?

你不能使用when()来设置东西的原因是,要使它工作,mocked 方法必须返回一些东西。但是,还有一个"反向"API/语法可以执行您想要的操作,例如:

doCallRealMethod().when(cmservice).markAsDeleted()

请参阅文档。还有更多。最通用的是doAnswer()方法。

相关内容

  • 没有找到相关文章

最新更新