我在一些测试中使用 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/47966724/