使用Mockito跳过行的执行
我正在使用moockito进行单元测试,我想跳过一行。
// method I am testing
public String doSomeTask(String src, String dst) {
// some code
utils.createLink(src,dst);
// some more code
}
// utils class
public void createLink(String src, String dst) {
// do something
Path realSrc = "/tmp/" + src;
Files.createSymbolicLink(realSrc, dst);
// do something
}
// Test class
@Mock
private Utils utils;
@Test
public void testDoSomeTask() {
// this does not seem to work, it is still executing the createLink method
doNothing.when(utils).createLink(anyString(), anyString());
myClass.doSomeTask(anyString(), anyString());
}
现在,createLink
是一个无效方法,在我的测试过程中,由于异常原因AccessDenied
创建目录失败。
我想跳过第utils.createLink(src,dst);
行,然后继续下一行。有什么方法可以让Mockito这么做吗?
解决方案
假设可以使用setter设置utils
变量,则可以窥探Utils
类对象并重写其createLink()
方法。
基本思想是:
Utils utils = new Utils();
Utils spyUtils = Mockito.spy(utils);
doNothing().when(spyUtils).createLink(any(String.class), any(String.class));
现在,通过setter设置此spyUtils
对象。每次调用createLink
时,它不执行任何操作。
相关文章