首頁 >Java >java教程 >如何在 Mockito 中模擬 Void 方法?

如何在 Mockito 中模擬 Void 方法?

DDD
DDD原創
2024-12-08 03:15:11975瀏覽

How to Mock Void Methods in Mockito?

使用 Mockito 模擬 Void 方法

如何使用 Mockito 框架模擬具有 void 返回類型的方法?這個特殊問題經常出現在物件方法不回傳值而是執行操作的場景中。

克服挑戰

Mockito API 提供了一系列處理這種情況的選項,包括 doThrow()、doAnswer()、doNothing()和doReturn().

  • doThrow(Exception):呼叫模擬方法時拋出預先定義的例外。
  • doAnswer(Answer):允許在呼叫模擬方法時定義自訂行為。 Answer 介面接受 IncationOnMock 物件並傳回適當的值(在本例中為 Void)。

範例實作

考慮以下範例場景:

public class World {

    private String state;

    // Setter for state
    public void setState(String s) {
        this.state = s;
    }
} 

public class WorldTest {

    @Test public void testingWorld() {
        World mockWorld = mock(World.class);

        // Mock the setState method using doAnswer
        doAnswer(new Answer<Void>() {
            @Override
            public Void answer(InvocationOnMock invocation) {
                Object[] args = invocation.getArguments();
                System.out.println("Called with arguments: " + Arrays.toString(args));
                return null;
            }
        }).when(mockWorld).setState(anyString());

        // Call the mock method and observe the output
        mockWorld.setState("Mocked");
    }
}

透過使用doAnswer 方法,我們可以為模擬setStateState 指定自訂行為方法。在上面的範例中,我們列印傳遞給方法的參數,提供其呼叫的可見性。

以上是如何在 Mockito 中模擬 Void 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn