我正在尝试对其中具有循环的方法进行单元测试。

基本上,该方法如下所示:

public List<Discount> methodName(Request request){
    for (Discount discountIteration: request.getList()) {
        applyDiscount(service1.getCode(discountIteration));
    }
    ...
}


因此,我不知道如何模拟service1.getCode(discountIteration)

我应该对when(...).thenReturn(...);的每个位置执行一个request.getList()(这是一个custome对象的列表)。

还是有什么办法可以动态地做到这一点?

编辑:我试图模拟循环内的method,而不是List

最佳答案

您可以使用any参数匹配器。

when(service1.getCode(any(DiscountIteration.class)).thenReturn(valueYouWantToReturn);


请记住,列表中的每个条目的valueYouWantToReturn都相同

10-07 15:45