使用Mockito 僅模擬超類中的特定方法呼叫
使用Mockito 進行模擬測試時,可能需要僅調用特定的方法呼叫超類別中的方法,同時保持其他呼叫不受影響。考慮以下場景:
<code class="java">class BaseService { public void save() {...} } public Childservice extends BaseService { public void save(){ //some code super.save(); } }</code>
在此範例中,您只想模擬 ChildService 類別中對 super.save() 的調用,保留其他 save() 方法調用的行為。
使用間諜和存根的解決方案
雖然重構可能是一個可行的解決方案,但它並不總是可行。在這種情況下,您可以利用間諜和存根技術來實現所需的模擬行為:
<code class="java">@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(); }</code>
說明:
透過使用間諜和存根,您可以有效地模擬所需的模擬行為,從而允許您測試特定的方法呼叫在超類別中,同時保留原始功能。
以上是如何使用 Mockito 僅模擬超類別中的特定方法呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!