Junit 将多个参数传递给 rest 服务



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

@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());
    }

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

您将无法传递使用@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
}

希望这是有道理的。

相关内容

  • 没有找到相关文章

最新更新