我正在尝试对其中有循环的方法进行单元测试。
基本上,该方法如下所示:
public List<Discount> methodName(Request request){
for (Discount discountIteration: request.getList()) {
applyDiscount(service1.getCode(discountIteration));
}
...
}
所以,我不知道如何模仿service1.getCode(discountIteration)
。
我应该的每个位置的when(...).thenReturn(...);
(这是一个客户对象的列表)。
或者有没有办法动态地做到这一点?
编辑:我试图在循环内部模拟method
,而不是List
2 回答
您可以使用
any
参数匹配器。请记住,
valueYouWantToReturn
对于列表中的每个条目都是相同或者有没有办法动态地做到这一点?
我不会这样做,但我会重构代码,使这个用例的类之间的耦合更小。
如此小的颗粒耦合,模拟将需要大量的锅炉板代码,不是直接可读的并且测试可维护性将是弱的。
您可以更改
service1.getCode()
方法或以这种方式添加新方法:现在你只需要模拟
getCodes()
返回的 List。