NullPointerexception при выполнении Mock Controller - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть код ниже в моем классе контроллера

public class GoodsController{

@AutoWired
Private GoodsService goodsService;
public ResponseEntity<String> startCall(HttpServletRequest request) {

        ResponseEntity<String> responseEntity = null;

        try {
            ResponseBean respBean = goodsService.startCall(request);
            HttpHeaders responseHeaders = new HttpHeaders();

            if(request.getAttribute(SessionConstants.GOODS_SESS) != null){
                responseHeaders.set(SessionConstants.GOODS_SESS,      request.getAttribute(SessionConstants.GOODS_SESS).toString());
            }

            responseEntity = new ResponseEntity<>(SessionUtil.objToJson(respBean, respBean), responseHeaders,
                    HttpStatus.valueOf(respBean.getStatus()));

            return responseEntity;

        } catch (AlightSessionException e) {
            StringBuilder message = new StringBuilder("{\"message\": \"error:\""+e.getMessage()+", ")
                    .append("\"status\":\"400\"}");
            responseEntity = new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST);
            ErrorLogEventHelper.logErrorEvent(SessionController.class.getName(), message.toString(), "startSessionForPerson()", e,
                    ErrorLogEvent.ERROR_SEVERITY);      
            return responseEntity;
        }

    }
}

И у меня есть код ниже в моем TestClass

   public class GoodsControllerTest{

    MockHttpServletRequestBuilder request = 

    MockMvcRequestBuilders
                    .post("/startCall").sessionAttr("personToken", "eyjpc");

            ResultActions result = mockMvc.perform(request);
             result.andExpect(MockMvcResultMatchers.status().isOk());

    }
  }

Во время выполнения я получил ошибку ниже, пожалуйста, помогите мне.

org.springframework.web.util.NestedServletException: обработка запроса не удалась;вложенным исключением является java.lang.NullPointerException в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:982) в org.springframework.web.servlet.FrameworkServlet.doPost (FrameworkSax.avlet.72).http.HttpServlet.service (HttpServlet.java:648) в org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:846) в org.springframework.test.web.servlet.TerDispatserSserv (: 65) по адресу javax.servlet.http.HttpServlet.service (HttpServlet.java:729) по адресу org.springframework.mock.web.MockFilterChain $ ServletFilterProxy.doFilter (MockFilterChain.java:mock.weg.weg.MockFilterChain.doFilter (MockFilterChain.java:134) по адресу org.springframework.test.web.servlet.MockMvc.perform (MockMvc.java:155) по адресу com.alight.upoint.sessionservice.controller.SessionControllerTlIxtControllerTest.Group57) на org.springframework.test.context.junit4.statements.RunBeforeTestMethodОбратные вызовыSpringRepeat.java:84..springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate (RunBeforeTestClassCallbacks.java:61) по адресу org.springframework.test.context.junit4.statements.RunAfterTestClassCallbackA.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:191) Вызывается: java.lang.NullPointerException в com.alight.upoint.sessionservice.controller.SessionController.startSessionForPerson Stroller.java:51) в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:205) в org.springframework.web.method.support.InvocableHandlerhoho.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod..springframework.web..web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:963) в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:897) в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970) ... еще 17

1 Ответ

0 голосов
/ 22 ноября 2018

Вам нужно использовать MockMvcBuilders.standaloneSetup для создания контекста приложения только с вашим контроллером, а затем использовать этот mockMcv для вызова API вашего контроллера, т. Е. Метод

Вы можете сослаться на этот пост для получения дополнительной информации.подробности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...