`

MockHttpServletRequest + Controller @RequestMapping 单元测试之 NullPointerException

阅读更多
MockHttpServletRequest 测试spring的Controller,如果Controller的类名和要调用的方法名上都写有@RequestMapping:
@Controller
@RequestMapping("email")
public class EmailRest extends AbstractController {

    @RequestMapping(method = RequestMethod.POST, value = "send")
    public HttpEntity<?> sendEmail(@Valid @RequestBody EmailForm json)  {
则如果在@Test里这样写:
MockHttpServletRequest request;
...
request.setRequestURI("/email/send");
则测试时会莫名其妙的报NullPointerException。

解决办法是为MockHttpServletRequest设置如下一个attribute:
request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);
参考资料:
http://hi.baidu.com/dgfytufxgvfmvwr/item/2c0ecdee115ffe0c8c3ea806
分享到:
评论

相关推荐

    SpringMybatis项目基于@RequestMapping和RequstAttribute实现登录注册

    @Controller @RequestMapping("/users") public class UserController { // ... } ``` 这表示`UserController`处理所有以"/users"开头的请求。在类内的方法上添加`@RequestMapping`可进一步细化请求映射,比如: `...

    Struts2+Spring+hibernate中对action的单元测试环境搭建[总结].pdf

    Struts2+Spring+Hibernate 中的Action单元测试环境搭建 在软件开发中,单元测试是一种非常重要的测试方法,可以帮助我们确保代码的可靠性和稳定性。在 Struts2+Spring+Hibernate 框架中,对 Action 的单元测试环境...

    springMVC中 RequestMapping的使用.docx

    @Controller @RequestMapping("/sys") public class LoginController { private Logger log = Logger.getLogger(this.getClass()); @RequestMapping("/login") public ModelAndView login(HttpServletRequest...

    Logincontroller.java

    @Controller @RequestMapping(value = "ViewController") class ViewController { //@Resource //private ComboPooledDataSource comboPooledDataSource; //@Resource //private JdbcTemplate jdbcTemplate; @...

    SpringMVC实现简单跳转方法(专题)

    @Controller public class Demo01Controller { @RequestMapping(path="/test01") public ModelAndView 传统方式跳转_请求转发(HttpServletRequest request,HttpServletResponse response) throws ServletException...

    第二课:通过MVC原理,自定义MVC框架实现1

    @Controller @RequestMapping("/users") public class UserController { @GetMapping("/{id}") public String getUser(@PathVariable Long id, Model model) { // 从数据库获取用户并将其添加到模型中 User user...

    java单元测试 spring mock的使用

    这样,在单元测试程序编写的时候,只需要继承WebTestCase类,并在setUp方法中调用WebTestCase的setUp方法,就可以直接引用MockHttpServletRequest、MockHttpServletResponse、ServletConfig、ServletConfig、...

    @Controller、@RestController注解区别详解

    @RestController注解相当于@Controller+@ResponseBody合在一起的作用。换句话说,@RestController注解可以将控制器类的方法返回值默认设置为JSON对象,省去了使用@ResponseBody注解的麻烦。 例如: ```java @...

    spring mvc注释文档

    本文介绍了Spring MVC在Spring 2.5版本中引入的基于注解的配置方式,包括使用`@Controller`、`@RequestMapping`等注解来定义Controller及其处理方法,以及如何配置DispatcherServlet等关键组件。通过使用这些注解,...

    Struts+Spring框架下的单元测试[总结].pdf

    JUnit是常用的Java单元测试框架,可以结合Mockito等库来创建mock对象,模拟Service的行为。例如,对于`LoginAction`的测试,可以创建一个mock的`ILoginManageService`,并设置其`login`方法的返回值,然后调用`...

    SpringMVC参数收集及乱码处理.docx

    @Controller public class MyController { @RequestMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password) { // 处理登录逻辑 } } ``...

    SpringMVC-SSH全注解

    @Controller public class UserController{ @Resource private UserService userService; @RequestMapping(value="/userList1.do") public String geUserList1(HttpServletRequest request ,...

    [Spring MVC] - ModelAttribute使用.docx

    @Controller @RequestMapping(value="test") public class TestController { @ModelAttribute public void preRun() { System.out.println("Test Pre-Run"); } // 其他方法... } ``` 这里的`preRun()`方法会...

    详解SpringMVC Controller介绍及常用注解

    在 SpringMVC 中,提供了一个非常简便的定义 Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用 @Controller 标记一个类是 Controller,然后使用 @RequestMapping 和 @RequestParam 等一些注解用以...

    SpringMVC工作原理实例详解

    在 SpringMVC 中,我们可以使用 @Controller 和 @RequestMapping 注解来处理浏览器中的请求。然而,请求是在哪里接收的?@Controller 和 @RequestMapping 注解做了什么?下面我们来探讨一下。 首先,我们需要了解 ...

    SpringMVC九大常用注解

    **定义**: `@Controller` 注解是用来标记一个类作为控制器(Controller)组件,在Spring MVC框架中扮演着请求处理者的角色。 **作用**: 通过这个注解,可以将一个普通的Java类变为Spring管理的Bean,并且将该Bean...

    SpringMVC - MultiActionController

    此外,SpringMVC后续版本推荐使用基于注解的控制器(如`@Controller`),它们更直观,更易于测试和维护。 在实际开发中,我们通常会转向使用`@RequestMapping`注解,它可以更灵活地映射请求到方法,同时支持多种...

    Java Spring Controller 获取请求参数的几种方法详解

    本文将详细讲解在Spring Controller中获取请求参数的六种常见方法。 1. **直接作为方法参数** 当请求是GET类型且`Content-Type`为`application/x-www-form-urlencoded`时,可以直接在Controller方法的参数列表中...

    spring mvc系列教程源码

    通常,控制器通过`@Controller`注解标识,然后通过`@RequestMapping`注解来定义处理特定URL请求的方法。例如: ```java @Controller @RequestMapping("/users") public class UserController { @RequestMapping...

Global site tag (gtag.js) - Google Analytics