gpt4 book ai didi

java - Mockito 如何仅模拟父类(super class)方法的调用

转载 作者:行者123 更新时间:2023-12-02 04:01:38 51 4
gpt4 key购买 nike

我在一些测试中使用 Mockito。

我有以下类(class):

class BaseService {  
public void save() {...}
}

public Childservice extends BaseService {
public void save(){
//some code
super.save();
}
}

我只想模拟 ChildService 的第二次调用 (super.save)。第一次调用必须调用真正的方法。有办法做到这一点吗?

最佳答案

如果您确实没有重构的选择,您可以模拟/ stub super 方法调用中的所有内容,例如

    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();
}

关于java - Mockito 如何仅模拟父类(super class)方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56731176/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com