Как издеваться над конкретным методом бобов - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть пружинный бин с несколькими API.Mocking bean не служит моей цели, так как я хотел бы проверить, что fetchFromDb () вызывается только один раз при множественных вызовах getCachedData () с одним и тем же вводом.Это делается для того, чтобы убедиться, что результат кешируется.

Возможно ли смоделировать fetchFromDb () на bean-компоненте market при вызове getCachedData ()?

Класс образцов

@Configuration("market")
public class AllMarket {

@Autowired
private CacheManager cachedData;

public boolean getCachedData(LocalDate giveDate) {
   //check if it exists in cache
   if(Objects.nonNull(checkCache(giveDate)) {
      return checkCache(giveDate);
   }
   //fetch from database
   boolean bool = fetchFromDb(givenDate);
   cacheData(giveDate, bool);
   return bool;
}
public boolean checkCache(LocalDate giveDate) {
   return cacheManager.getData(givenDate); 
}
public boolean fetchFromDb(LocalDate givenDate) {
  //return the data from database
} 
public void cacheData(LocalDate givenDate, boolean bool) {
   cacheManager.addToCache(givenDate, bool);
}

}

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

Вы можете использовать Mockito.spy() для этого вида теста.В этом случае вы должны следить за своим экземпляром AllMarket и заглушкой fetchFromDb.В конце вы можете Mockito.verify, чтобы fetchFromDb был вызван ровно один раз.Это будет выглядеть примерно так:

AllMarket spy = spy(allMarket);
when(spy.fetchFromDb(givenDate)).thenReturn(true); //you have boolean as a return type
...
verify(spy, times(1)).fetchFromDb(givenDate);

Для получения дополнительной информации вы можете увидеть Официальный документ Mockito

0 голосов
/ 22 февраля 2019

Возможно, захватчик аргумента мокито может вас зацепить.Он позволяет вам захватывать ввод метода и сколько раз был вызван метод, а также другие функции.Пожалуйста, проверьте https://www.baeldung.com/mockito-annotations.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...