[英]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.