使用Mockito跳过行的执行 [英] Skip execution of a line using Mockito
本文介绍了使用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
时,它不执行任何操作。
这篇关于使用Mockito跳过行的执行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文