Модульное тестирование метода, который вызывает метод, возвращающий страницу объекта. - PullRequest
1 голос
/ 06 мая 2020

Я хотел бы протестировать следующий метод для случая, когда я знаю, что основной вызов метода findAllByMerchantId () возвращает фиксированное количество результатов (страница с фиксированным количеством сущностей).

public ListBeneficiaryResponseDTO getBeneficiariesOfMerchant(Long merchantId, Integer page, Integer pageSize,
                                                             String sortDirection, String sortField) {

    // default we are setting to added on desc sort
    Sort sort = Sort.by(Sort.Direction.DESC,"addedOn");
    if(sortField != null && sortDirection != null) {
        sort = Sort.by(Sort.Direction.fromString(sortDirection),sortField);
    }

    Pageable pageRequest = PageRequest.of(page-1, pageSize, sort);
    Page<Beneficiary> pageOfBeneficiaries = beneficiaryRepository.findAllByMerchantId(merchantId, pageRequest);

    List<BeneficiaryResponseDTO> benResonseDtoList = new ArrayList<BeneficiaryResponseDTO>();

    for( Beneficiary ben: pageOfBeneficiaries.getContent()) {
        benResonseDtoList.add(this.getBeneficiaryResponseDTO(ben));
    }
    ListBeneficiaryResponseDTO formattedListBen = new ListBeneficiaryResponseDTO(pageOfBeneficiaries.getTotalPages(),pageOfBeneficiaries.getTotalElements(),pageOfBeneficiaries.getNumber(),benResonseDtoList);
    return formattedListBen;
}

Как имитировать ответ на вызов findAllByMerchantId (), чтобы вернуть фиксированное количество результатов на странице?

PS Новичок в модульном тестировании ..

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Вы можете использовать mockito вместе с junit. Mockito - это фреймворк, который мы собираемся использовать для имитации объектов и методов-заглушек. Junit для запуска теста.

public class Test {

   @Mock
   private BeneficiaryRepository beneficiaryRepository;

   @Test
    public void testGetBeneficiariesOfMerchant()  {
//your code ...
        Page<Beneficiary> pages = // your initialization  
when(beneficiaryRepository.findAllByMerchantId(any(),any())).thenReturn(pages);
//your code ...
    }

}

Для получения дополнительной информации перейдите по ссылке ниже: https://www.vogella.com/tutorials/Mockito/article.html

0 голосов
/ 06 мая 2020

@ Mock publi c Page findAllByMerchantId (merchantId, pageRequest) выбрасывает IOException {// создает объект желаемого класса и возвращает. return obj; }

Вы можете попробовать описанный выше подход.

...