[英]How to mock public void method using jmockit?
我正在嘗試為我的Spring MVC控制器編寫一些junit測試,到目前為止,我已經能夠成功完成它。 我也與jmockit一起使用Spring Mock。
下面是我在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
}
以下是我為DataController
類中的processWork
方法編寫的junit測試。
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
方法(這很好),然后調用SomeOtherClass
processTask
方法,這就是我要避免的事情。
意思是,有什么辦法,我可以模擬SomeOtherClass
processTask
方法來返回一些默認值,而不是運行實際的代碼, processTask
方法中有什么?
當前,在我的junit測試運行中,它也正在調用SomeOtherClass
processTask
方法,並且processTask
的代碼也正在運行,這就是我要避免的事情。 我不希望使用jmockit通過模擬運行processTask
存在的任何代碼?
這可能嗎?
您可以使用JMockit來模擬您的public void
方法,如下所示:
new MockUp<SomeOtherClass>() {
@Mock
public void processTask(String value, List<Map<String, String>> mappings) throws Exception {
System.out.println("Hello World");
}
};
只需在單元測試開始時將其添加到模擬上方即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.