2015-04-21 40 views
0

我休息控制器像波紋管:Junit的傳遞多個參數來休息服務

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

我不能過去多個參數控制服務,我該如何避免這種情況?

+0

爲什麼不直接提供'Deal'和'Owner'實例來測試'createDeal(..)'方法? – isah

+0

我沒有找到你,你能解釋一下嗎? –

回答

3

您將無法傳遞用@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 

} 

希望這是有道理的。