Как издеваться над одним и тем же методом несколько раз, используя mockito

У меня есть метод, который нужно вызвать несколько раз, и я могу вернуть тот же результат в тестовом примере, я вызываю when использовании для цикла, но есть ли более простой способ сделать это?

 val ONE_DAY_FORMAT: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd") val tempCalendar = Calendar.getInstance() for (i in (0..15)) { `when`(accountingDao.sumOfDay(ONE_DAY_FORMAT.format(tempCalendar.time))) .thenReturn(100.0f) tempCalendar.add(Calendar.DAY_OF_YEAR, -1) } 

Обычно, когда настройка сложнее, стратегия doAnswer будет использоваться:

  Mockito.doAnswer(new Answer<Float>() { @Override public Float answer(InvocationOnMock invocation) throws Throwable { String argument = (String)invocation.getArgument(0); if(supportedDates.contains(argument)){ return 100.00f; }else{ return null; } } }).when(accountingDao.sumOfDay(any(String.class))); 

Таким образом, вы в основном поймаете входной параметр, а затем решаете на основе его ценности, что должно быть возвращено динамически.

Вместо того, чтобы издеваться над одним и тем же методом, один раз обманите метод и вызовите метод проверки, передав необязательный параметр режима проверки. Например, если вы хотите, чтобы какой-то метод вашего издевающегося класса вызывался дважды, вы можете сделать оператор проверки, подобный этому

 verify(mockedClass, Mockito.times(2)).someMethod(); 

Это проверит, будет ли someMethod() дважды вызван.

Из вашего цикла переместите ваш «когда …»:

 when`(accountingDao.sumOfDay(any()).thenReturn(100.0f)