Junit 将多个参数传递给 rest 服务
Junit passing multiple parameters to rest service
我有一个像下面这样的休息控制器:
@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 注释的多个参数。这个注解所注解的参数包含了整个请求体,不能拆分成多个。
你可以做的是用一个包装器来保存你的 Deal
和 Owner
对象,你可以将该包装器作为单个请求正文参数传递。
例如:
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
}
希望这是有道理的。
我有一个像下面这样的休息控制器:
@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 注释的多个参数。这个注解所注解的参数包含了整个请求体,不能拆分成多个。
你可以做的是用一个包装器来保存你的 Deal
和 Owner
对象,你可以将该包装器作为单个请求正文参数传递。
例如:
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
}
希望这是有道理的。