使用 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中文網其他相關文章!