2014-06-09 41 views
0

我想爲我的Spring MVC控制器編寫一些junit測試,到目前爲止我能夠成功完成它。我正在使用Spring Mock以及jmockit。如何模擬使用jmockit的public void method?

下面是我在DataController控制方法 -

@RequestMapping(value = "processWork", method = RequestMethod.GET) 
public @ResponseBody 
DataResponse processWork(@RequestParam("conf") final String value, @RequestParam("dc") final String dc) { 

    // .. some code here 


    SomeOtherClass modifier = new SomeOtherClass(zookClient); 
    List<Map<String, String>> mappings = getMappings(dc); 
    modifier.processTask(value, mappings);  

    // .. some code here 

} 
SomeOtherClass

現在,processTask的方法是這樣的 -

public void processTask(String value, List<Map<String, String>> mappings) throws Exception { 

    // some code here 

} 

下面是我的JUnit測試,我在爲processWork方法寫類DataController

private MockMvc mockMvc; 

@Test 
public void test03_processWork() throws Exception { 

    mockMvc.perform(
     get("/processWork").param("conf", "shsysysys").param("dc", "eux")).andDo(print()).andExpect(status().isOk()); 

} 

問題陳述: -

現在,這個問題是,每當我運行test03_processWork單元測試,它進入我的控制器的processWork方法(這是罰款),然後調用processTask我的SomeOtherClass方法,這就是我想要避免的。

含義,有什麼辦法,我可以嘲笑的SomeOtherClassprocessTask方法返回,而不是運行實際的代碼在processTask方法什麼是有一些默認值,?

我的JUnit測試運行

目前,還呼籲的SomeOtherClassprocessTask方法和內部processTask代碼同時運行,這就是我想避免的。我不想通過使用jmockit嘲笑processTask中的任何代碼?

這可能嗎?

+0

下流者,小心解釋什麼是錯的?如果我有任何錯誤,我很樂意改進我的問題。我仍然在學習嘲弄的東西。 – john

+0

請參閱http://jmockit.googlecode.com/svn/trunk/www/tutorial/AnExample.html上的MockUp <>示例 – Jayan

回答

0

您可以使用jmockit嘲笑你的public void方法是這樣 -

new MockUp<SomeOtherClass>() { 
    @Mock 
    public void processTask(String value, List<Map<String, String>> mappings) throws Exception { 
     System.out.println("Hello World"); 
    } 
}; 

只需在單元測試的開始添加上述模擬。

+0

給出一個類有3個方法,其中1是無效返回方法,我嘲笑另一個2期望。我看到單獨的void返回方法我不能使用MockUp,因爲它們都不能用於1個測試用例。有什麼辦法實現這一點? –

相關問題