2017-01-05 10 views
0

Привет У меня есть следующий тест, и я не могу заставить его работать, его предоставление NullPointerException:Mockito NullPointerException

Метод испытания:

private ResponseEntity getDefaultCart(HttpEntity<String> request, String zoomQuery) { 
    LOG.info("Get user's default cart with zoom query" + zoomQuery); 
    String defaultCartUrl = cortexApiUrl + Constants.CARTS + scope + Constants.DEFAULT + Constants.ZOOM + zoomQuery; 
    return baseRepository.getCall(defaultCartUrl, request); 
} 

JUnit этого метода:

@Test 
public void testUpdateCart() { 
    MockitoAnnotations.initMocks(this); 
    cortexRepository= new CortexRepositoryImpl("https://abc.juy", "ocean", baseRepositoryImpl); 
    Mockito.when(baseRepositoryImpl.createRequestHeaders("guestId")).thenReturn(httpHeaders); 
    JSONObject orderDetails = createCortexCreateOrderObject("cortexCreateOrderResponse.json"); 
    ResponseEntity<JSONObject> entity=new ResponseEntity<JSONObject>(orderDetails,HttpStatus.ACCEPTED); 
    HttpEntity<String> request = new HttpEntity<String>(httpHeaders); 
    Mockito.when(baseRepositoryImpl.getCall("http://www.abc.hyh", request)).thenReturn(entity); 
    cortexRepository.updateCart(updateCartRequest); 
} 

метод getDefaultCart звоните из updateCart метод. Объект orderDetails правильно заполняется.

NUllPointer дает on line: baseRepository.getCall(defaultCartUrl, request).

Любое предложение ??

ответ

0

Я думаю, что экземпляр BaseRepositoryImpl используется, когда вы вызываете baseRepository.getCall(defaultCartUrl, request);, не является тем же экземпляром, который передается new CortexRepositoryImpl("https://abc.juy", "ocean", baseRepositoryImpl);.

Поэтому убедитесь, что вы не создаете его новый экземпляр в CortexRepositoryImpl и фактически используете объект, переданный в конструктор.

Не могу быть уверен без источника CortexRepositoryImpl, но это похоже на наиболее вероятную проблему.