0

I want to write mockito for the following code , but not getting how to write for method inside method buildGetSubtenantsURL ,getSubtenants,getSubtenantName -

 public void addNewMap(MapDTO mapDTO) {
            `...............................`
            String subtenantsURL = buildGetSubtenantsURL(null); 
            String subTenantsResponse  = getSubtenants(subtenantsURL,iottenant);
            JSONObject subTenant = getSubtenantName(subTenantsResponse);
            checkForMultiplePagesSubtenants(subTenantsResponse, subtenantInfoMap,iottenant);
            
            if(subtenantInfoMap.get(mapDTO.getSubtenantName()) != null) {
                mapEntity = Maps.builder().subtenant(subtenantInfoMap.get(mapDTO.getSubtenantName()).toString()).build();
            }
            else {
                throw new DataNotFoundException(SUBTENANT_DOESNT_EXIST);
            }
            
            String SubtenantId = subtenantInfoMap.get(mapDTO.getSubtenantName());
            UriComponents assetsURL = buildGetAssetsURL(iottenant,SubtenantId);
            String assetsResponse = getAssets(assetsURL, iottenant);
            String mindsphereAssetId = getAssetId(assetsResponse);
        }

String url = new StringBuilder().append(mindsphereBaseURL).append(mindsphereAssetsURL).toString();
    UriComponents baseUriComponents = UriComponentsBuilder.fromHttpUrl(url).build();
    JSONObject typeId = new JSONObject();
    typeId.put(Constants.TYPEID, iottenant + "." + assetType);
    typeId.put(Constants.SUBTENANT,SubtenantId);
    baseUriComponents = UriComponentsBuilder.fromUri(baseUriComponents.toUri())
            .queryParam(Constants.FILTER, typeId.toString()).queryParam(Constants.BASIC_FIELDS_ONLY,"true").build().encode();

    return baseUriComponents;

1 Answers1

0

You can't achieve this with Mockito. For that, you would need Powermock (check https://www.baeldung.com/powermock-private-method for details and examples).

Having said that, mocking private methods is a really bad practice. By doing so what will you be testing? Will this be a partial unit test (since you are not even testing the whole unit, which is the class under test)? My suggestion is that you avoid this as harder as you can.

João Dias
  • 16,277
  • 6
  • 33
  • 45