使用Mockito跳过行的执行 [英] Skip execution of a line using Mockito

查看:0
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆