0
Я пишу JUnit
для метода, который unmarshalling Object
. Он бросает IllegalArgumentException
, пока не сортирует объект. Я не могу опубликовать весь метод.Mocking Unmarshaller
Метод тестируемой
public void filter(ClientRequestContext requestContext, ClientResponseContext responseContext) throws IOException {
MultivaluedMap<String, String> headers = responseContext.getHeaders();
String contentType = headers.getFirst(CONTENT_TYPE_HEADER);
if(contentType != null && contentType.startsWith(TEXT_XML)) {
if(200 == responseContext.getStatus()) {
if(requestContext.getUri().toString().contains("Policy/Retrieve")) {
try {
GetPolicyResponse p = (GetPolicyResponse)EISClientJAXBContextFactory.getUnmarshaller(GetPolicyResponse.class).unmarshal(responseContext.getEntityStream());
}
При отладке я обнаружил, что is
равна нулю, но я передаю inputStream
public final Object unmarshal(java.io.InputStream is)
throws JAXBException {
if(is == null) {
throw new IllegalArgumentException(
Messages.format(Messages.MUST_NOT_BE_NULL, "is"));
}
InputSource isrc = new InputSource(is);
return unmarshal(isrc);
}
JUnit
@Test
public void testPersonalAutoDriver() throws Exception {
ClientRequestContext requestContext = mock(ClientRequestContext.class);
ClientResponseContext responseContext = mock(ClientResponseContext.class);
MultivaluedMap<String, String> headers = mock(MultivaluedMap.class);
URI uri = new URI("Policy/Retrieve");
Unmarshaller unmarshaller = mock(Unmarshaller.class);
when(responseContext.getHeaders()).thenReturn(headers);
when(headers.getFirst(Mockito.eq("Content-Type"))).thenReturn("text/xml");
when(responseContext.getStatus()).thenReturn(200);
when(requestContext.getUri()).thenReturn(uri);
JAXBContext context = JAXBContext.newInstance(GetPolicyResponse.class);
Marshaller marshaller = context.createMarshaller();
Policy policy = new Policy();
policy.setPolicyType(PolicyTypeEnum.PERSONAL_AUTO);
GetPolicyResponse policyResponse = new GetPolicyResponse();
policyResponse.setPolicy(policy);
StringWriter writer = new StringWriter();
marshaller.marshal(policyResponse, writer);
System.out.println("**** Object Marshalled Successfully ****");
InputStream inputStream = new ByteArrayInputStream(writer.toString().getBytes());
when(unmarshaller.unmarshal(inputStream)).thenReturn(policyResponse);
// EISClientJAXBContextFactory.getUnmarshaller(GetPolicyResponse.class);
// Unmarshaller unmarshaller = context.createUnmarshaller();
// GetPolicyResponse policyResponse2 = (GetPolicyResponse) unmarshaller.unmarshal(inputStream);
// assertNotNull(policyResponse2);
filter.filter(requestContext, responseContext);
System.out.println("**** Object Unmarshalled Successfully ****");
}
Я также упомянул, что передаю аргумент, но все же он дает мне ту же ошибку. – Jaykumar
Если бы я знал, что я прохожу, то зачем мне задавать этот вопрос. Я знаю, что NULL выбрасывает NPE, но здесь я не могу определить. Если вы определили проблему, дайте мне знать. – Jaykumar
Когда он достигает метода unmarshall. показывает null. – Jaykumar