首页 > Java > java教程 > 如何使用 Mockito 模拟来自超类的方法调用:实用指南

如何使用 Mockito 模拟来自超类的方法调用:实用指南

Linda Hamilton
发布: 2024-11-01 04:42:02
原创
848 人浏览过

How to Mock a Method Call from a Superclass with Mockito: A Practical Guide

克服 Mockito 挑战:模拟来自超类的方法调用

Mockito 是一个 Java 模拟框架,为隔离方法调用提供了强大的工具测试期间。然而,某些场景需要仅模拟特定的调用,特别是在处理继承时。

考虑以下类层次结构:

<code class="java">class BaseService {  
    public void save() {...}  
}

public Childservice extends BaseService {  
    public void save(){  
        //some code  
        super.save();
    }  
}   </code>
登录后复制

目标是仅模拟对 super.save( 的调用) ) 在 ChildService 类中,在第一次调用时保持原始方法调用不变。

一种方法涉及策略性地使用 Mockito 的间谍() 方法来创建 ChildService 类的模拟。通过对在 super.save() 中调用的 BaseService 类的 validate() 方法进行存根,我们有效地防止了不需要的方法调用:

<code class="java">class BaseService {

    public void validate(){
        fail(" I must not be called");
    }

    public void save(){
        //Save method of super will still be called.
        validate();
    }
}

class ChildService extends BaseService{

    public void load(){}

    public void save(){
        super.save();
        load();
    }
}

@Test
public void testSave() {
    ChildService classToTest = Mockito.spy(new ChildService());

    // Prevent/stub logic in super.save()
    Mockito.doNothing().when((BaseService)classToTest).validate();

    // When
    classToTest.save();

    // Then
    verify(classToTest).load();
}</code>
登录后复制

这种方法有效地隔离了对 super.save( ),同时允许第一次调用原始方法调用。它确保测试专门关注所审查的所需方法。

以上是如何使用 Mockito 模拟来自超类的方法调用:实用指南的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板