使用 Mockito 模拟抽象类
测试抽象类时,手动制作模拟可能会很不方便。 Mockito 提供了更高效的解决方案。
查询:
是否可以使用 Mockito 来模拟抽象类,而不是手动创建模拟?如果是,怎么做?
答案:
Mockito 提供了模拟抽象类的选项,而无需创建具体的子类。使用 Mockito.mock(My.class, Answers.CALLS_REAL_METHODS),您可以创建一个部分模拟,其中抽象方法由模拟本身处理。
例如:
<code class="java">public abstract class My { public Result methodUnderTest() { ... } protected abstract void methodIDontCareAbout(); } public class MyTest { @Test public void shouldFailOnNullIdentifiers() { My my = Mockito.mock(My.class, Answers.CALLS_REAL_METHODS); Assert.assertSomething(my.methodUnderTest()); } }</code>
注意使用 CALLS_REAL_METHODS 时,除非在测试中显式覆盖,否则所有实际方法都会被执行。这种方法比使用间谍提供了更大的灵活性,间谍需要实例化抽象类的子类。
以上是Mockito 可以模拟抽象类吗?的详细内容。更多信息请关注PHP中文网其他相关文章!