2017-02-07 3 views
1

У меня есть фактический метод ниже:Получение NullPointerException в Mockito

public ResponseEntity<Message> catEnter(@PathVariable("catId") BigInteger catId, @RequestBody Catrequest catReq, HttpServletRequest request) throws CatDataException, InvalidCatExcecatption { 
    Message message = new Message(); 
    try { 
     message = catManager.submitData(catReq.getMessage(), catId, request); 
    } catch (IOException e) { 
     throw new CatDataAppException(e.getMessage()); 
    } 
    return (ResponseEntity<Message>) restResponse(message, request.getMethod()); 
    // Getting null pointer exception in above line 
} 

Я использую Mockito для моего тестового кода, как показано ниже:

@Test 
public void submitData() throws Exception { 
    Message mes = new Message(); 
    mes.setCode("00"); 
    mes.setMessage("hi"); 
    ResponseEntity<Message> responseentity = ((ResponseEntity<Message>) catController.catEnter(BigInteger.valueOf(3431), catRequest, mockRequest)); 
} 

Я получаю исключения нулевого указателя, сообщение происходит как null, даже я устанавливаю значение явно?

ответ

0

Здесь:

Проходите mockRequest, делая этот призыв к коду продукции:

ResponseEntity<Message> responseentity = ... catController.catEnter(... mockRequest)); 

И ваш производственный вызов делает:

return (ResponseEntity<Message>) restResponse(message, request.getMethod()); 

Так что единственный conclussion: mockRequest равно нулю !

Таким образом, сначала удостоверйте, что переданная переменная не null; как:

Request mockedRequest = mock(Request.class); 

Или используйте аннотацию @Mock в том случае, mockedRequest это поле в тестовом классе.

Кроме того; Вы, вероятно, хотите сделать некоторый макет спецификации, как:

when(mockedRequest.getMethod()).thenReturn(whatever) 

Но, кроме того, вам не хватает много фундаментальных основ Java:

  • именования: имена переменных идут верблюжьи, как entityResponse. И, как правило, тесты называются testCatEnter, чтобы выразить тестируемый метод.
  • У вас есть броски ... там, где они не требуются.
  • У вас есть довольно некоторый код ... который не используется, как объявление mes в вашем методе тестирования.

Короче говоря: у меня есть ощущение, что вы перегружать себя драматически. Сначала изучите основы; затем перейдите на продвинутый материал Mockito.

+0

Я проверил mockRequest не null, я получаю объект сообщения null, даже явно назначая значения. Я пробовал аннотацию @Mock и Message message = mock (Message.class); но не использовать все еще, получая такое же исключение нулевой указатель. – Karthick

+0

Тогда я думаю, вам следует отступить и создать ** полный ** [mcve] для нас. Код, который вы показываете прямо сейчас, недостаточно «достаточно», чтобы действительно понять, что происходит. – GhostCat

+0

ниже - макет строки , когда ((String) restHttpClient.getForCat (любой (RequestCat.class), любой (RequestEye.class))). ThenReturn (catData); Ниже приведена фактическая строка cat = (String) restServiceHelper.getForCat (RequestCat, RequestEye); В приведенной выше строке я получаю null – Karthick

Смежные вопросы