How can we test method arguments which have Generics as a method argument.
public class AbstractServiceClient(){
public constructBusinessClient(String serviceName, String clientName, Class<? extends AbstractTO> requestClass, AbstractTO serviceRequestTO){
constructBusinessServicesRestClientProperties(servicename, clientName, requestClass, servicerequestTO);
}
//write a test case to check if the the class that extends AbstractTO is passed to the below method (Class requestClass)
public BusinessServicesRestClient constructBusinessServicesRestClientProperties(String serviceName,String clientName, Class<? extends AbstractTO> requestClass
, AbstractTO serviceRequestTO){
//set values
}
}
public class AbstractServiceClientTest {
private Class<? extends AbstractTO> requestClass;
private static final String CLIENT_NAME = "clientName";
private AbstractTO serviceRequestTO ;
private AbstractServiceClient abstractServiceClient;
@Test
public void constructBusinessServiceClientShouldSetCorrectClientName() {
abstractServiceClient.constructBusinessClient(operation,clientName, requestClass, abstractClass);
abstractServiceClient.constructBusinessServicesRestClientProperties(any(String.class), eq(CLIENT_NAME), requestClass, any(AbstractTO.class));
}
}
@Test
public void constructBusinessServiceClientShouldSetCorrectRequestClass() {
abstractServiceClient.constructBusinessClient(operation,clientName, requestClass, abstractClass);
abstractServiceClient.constructBusinessServicesRestClientProperties(any(String.class), eq(CLIENT_NAME), eq(requestClass), any(AbstractTO.class));
}
}
}