Новичок в модульном тестировании. Ниже приведен метод, который нужно протестировать:
public ListBeneficiaryResponseDTO getBeneficiaryOfMerchants(Long merchantId, Integer page, Integer pageSize,
String sortDirection, String sortField) {
LOGGER.info("Inside getBeneficiaryOfMerchants method");
// 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;
}
Я подумал, что этот метод может делать не так, чтобы писать тесты, учитывая, что вызовы базовых методов работают нормально. Ну, я не уверен, но может быть какая-то ошибка при помещении элементов в список.
Итак, я подумал написать тест, чтобы убедиться, что ожидаемое количество элементов присутствует в списке benResonseDtoList.
Вот что я пробовал:
@Test
public void testGetBeneficiariesOfMerchant() throws Exception {
Long merchantId = 2l;
List<Beneficiary> beneficiaryList = new ArrayList<Beneficiary>();
beneficiaryList.add(getBeneficiaryDto());
beneficiaryList.add(getBeneficiaryDto());
Page<Beneficiary> beneficiaries = new PageImpl<Beneficiary>(beneficiaryList); //But I am not sure how many entries are there in the page created.
Mockito.when(beneficiaryRepository.findAllByMerchantId(any(),any())).thenReturn(beneficiaries);
KeyManager keyManager = Mockito.mock(KeyManager.class);
ListBeneficiaryResponseDTO list = beneficiaryService.getBeneficiaryOfMerchants(merchantId,1,2, "DESC","addedOn");
Если бы была четкая корреляция между количеством элементов в BeneficiaryList и записями в pageOfBeneficiaries, я мог бы это проверить.