mockito 如何在junit mocking中忽略实际调用的方法

cld4siwp  于 2023-11-18  发布在  其他
关注(0)|答案(1)|浏览(143)
public class DBLayer{

    public Calendar getUpdateDate(long id){
        //database logic
        return date;
    }
}

public class Service{
    private DBLayer dbLayer = new DBLayer();

    public int methodA(){
        Calendar updateDate = dbLayer.getUpdateDate(101L);
        //some logic
    }

}

字符串
我想为Service类methodA编写junit测试,但不想调用getUpdateDate。通过监视或模拟它,也会调用此getUpdate。
我尝试了使用Mockito.doReturn()的spy的建议,但是getUpdateDate也被调用了。我怎么能完全忽略调用呢?或者我应该使用任何其他框架(除了PowerMock)来获得这个功能,它可以将这个DBLayer类视为黑盒并忽略实际调用的方法。

t9eec4r0

t9eec4r01#

方法getUpdateDate()是服务方法的一部分。
你不能测试一个方法X,然后像这样定义你的测试:“哦,我想测试X,X执行了A,但我忽略了A”。
如果要测试服务方法,则必须同时测试getUpdateDate()或模拟getUpdateDate(),以便它返回定义的值。

相关问题