mockito - 执行 Mock Controller 时出现 NullPointerexception
问题描述
我的控制器类中有以下代码
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(FrameworkServlet.java:872) 在 javax.servlet .http.HttpServlet.service(HttpServlet.java:648) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 在 org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java :65) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 在 org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:167) 在 org.springframework.mock.web。模拟过滤器链。
解决方案
您需要使用MockMvcBuilders.standaloneSetup
仅使用您的控制器创建应用程序上下文,然后使用此 mockMcv 调用您的控制器 API 即方法
您可以参考这篇文章了解更多详情。
推荐阅读
- c#-4.0 - 在没有密码的情况下根据 LDAP 目录检查用户名 c# 4.5
- android - SimpleDateFormat("MM/dd/yy, HH:mm:ss zzz") 给出时区为 GMT+05:30
- java - 尝试使用 ArrayUtils.removeElement
- xamarin - 如何在 UWP 项目中注册服务
- c# - 为什么套接字被阻止接收,而我睡在另一个线程上?
- html - 在 Tumblr 上更改为 -500 后的凌乱照片集
- dart - 颤振开关 - onChanged 不改变
- r - 如何在 gbm 包分析中计算生存函数?
- java - @Where 注解无法解析
- php - Laravel 雄辩的模型关系