【问题标题】:Junit passing multiple parameters to rest serviceJunit将多个参数传递给休息服务
【发布时间】:2015-06-28 11:10:57
【问题描述】:

我有一个像下面这样的休息控制器:

@RequestMapping(value = "/create", method = RequestMethod.POST)
    public
    @ResponseBody
    GlobalResponse createDeal(@RequestBody Deal deal,@RequestBody Owner owner) {

// code here

}

我使用 Junit 和 Mockito 进行测试:

@Test
    public void createDeal() throws Exception{
        this.mockMvc.perform(post("/v1/Deal/create").content("\"deal\":{\"dealNumber\":\"DA001\"},\"owner\":{\"id\":1}").contentType(MediaType.APPLICATION_JSON)).andDo(print());
    }

我无法将多个参数传递给控制器​​服务,我该如何避免这种情况?

【问题讨论】:

  • 为什么不直接提供DealOwner 实例来测试createDeal(..) 方法?
  • 我没听明白,你能解释一下吗

标签: spring rest spring-mvc junit mockito


【解决方案1】:

您将无法传递带有@RequestBody 注释的多个参数。此注解注解的参数包含整个请求正文,不能拆分为多个。

您可以做的是拥有一个包装器来保存您的 DealOwner 对象,您可以将该包装器作为单个请求正文参数传递。

例如:

public class Wrapper {
    private Deal deal;
    private Owner owner;

    //Getters and setters
}

还有你的控制器的方法:

@RequestMapping(value = "/create", method = RequestMethod.POST)
    public
    @ResponseBody
    GlobalResponse createDeal(@RequestBody Wrapper wrapper) {

// code here

}

希望这是有道理的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2011-04-21
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多