gpt4 book ai didi

mockito - 是否可以使用 Mockito 的 doCallRealMethod 调用接口(interface)的默认实现?

转载 作者:行者123 更新时间:2023-12-04 12:40:50 33 4
gpt4 key购买 nike

假设我有以下界面:

public interface ISomething {

default int doStuff() {
return 2 * getValue();
}

int getValue();
}

当我现在像这样模拟这个界面时:
@Mock
private ISomething _something;

@Before
public void setup() {
doCallRealMethod().when(_something).doStuff();
}

并尝试测试 doStuff() 方法,如下所示:
@Test
public void testDoStuff() {
when(_something.getValue()).thenReturn(42);
assertThat("doStuff() returns 84", _something.doStuff(), is(84));
}

我希望测试成功,但我得到:
org.mockito.exceptions.base.MockitoException:
Cannot call real method on java interface. Interface does not have any implementation!
Calling real methods is only possible when mocking concrete classes.

我尝试子类化 ISomething像这样的抽象类:
public abstract class Something implements ISomething {
}

并像上面那样模拟这个类。使用这种方法,我得到了相同的结果。

Mockito 不支持调用默认实现吗?

最佳答案

这是正确的。当前版本的 Mockito 不支持此功能。你可以 raise a feature request here 。请注意,它似乎与 1.10.0 版中修复的问题 456 有关,因此请确保首先在最新版本中进行测试。

关于mockito - 是否可以使用 Mockito 的 doCallRealMethod 调用接口(interface)的默认实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27131589/

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