我想爲我的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
方法,這就是我想要避免的。
含義,有什麼辦法,我可以嘲笑的SomeOtherClass
processTask
方法返回,而不是運行實際的代碼在processTask
方法什麼是有一些默認值,?
目前,還呼籲的SomeOtherClass
processTask
方法和內部processTask
代碼同時運行,這就是我想避免的。我不想通過使用jmockit嘲笑processTask
中的任何代碼?
這可能嗎?
下流者,小心解釋什麼是錯的?如果我有任何錯誤,我很樂意改進我的問題。我仍然在學習嘲弄的東西。 – john
請參閱http://jmockit.googlecode.com/svn/trunk/www/tutorial/AnExample.html上的MockUp <>示例 – Jayan