首頁  >  文章  >  Java  >  @MockBean、@Mock 或 Mockito.mock():您應該選擇哪種模擬方法?

@MockBean、@Mock 或 Mockito.mock():您應該選擇哪種模擬方法?

Patricia Arquette
Patricia Arquette原創
2024-11-01 05:17:27859瀏覽

  @MockBean, @Mock, or Mockito.mock(): Which Mocking Approach Should You Choose?

理解@MockBean、@Mock 和Mockito.mock() 進行有效的模擬

在軟體測試領域,模擬依賴關係發揮著作用在隔離和測試各個組件方面發揮著至關重要的作用。在各種可用的方法中,本文深入研究了用於依賴模擬的 @MockBean、@Mock 和 Mockito.mock() 之間的細微差別。

@Mock(@Mock 和Mockito.mock())

Mockito 的@Mock 和Mockito.mock() 在功能上是等效的,並且允許模擬類別或接口,從而能夠記錄和驗證行為。基於註解的方法通常因其簡潔性而受到青睞。

@MockBean (Spring Boot)

@MockBean 是 Spring Boot 類,專門設計用於將模擬引入到Spring應用程式上下文。與@Mock不同,它不會取代現有的bean,而是添加或替換與模擬類別相容的bean。

何時使用什麼?

@Mock 和 @Mock 之間的決定@MockBean 取決於測驗的要求。對於不需要 Spring Boot 依賴並優先考慮執行速度的單元測試,建議使用 @Mock。

但是,如果測試依賴於Spring Boot 容器,需要模擬或替換容器bean,@MockBean 提供了一種方便的方式

典型的@MockBean 範例

使用@WebMvcTest 的Web 測試切片經常利用@MockBean 來模擬依賴關係:

@MockBean
private FooService fooServiceMock;

在測試方法,可以配置模擬服務,並驗證其行為:

@Test
public void testExample() throws Exception {
    Foo mockedFoo = new Foo("one", "two");
    Mockito.when(fooServiceMock.get(1)).thenReturn(mockedFoo);

    mvc.perform(get("foos/1")
       .accept(MediaType.TEXT_PLAIN))
       .andExpect(status().isOk())
       .andExpect(content().string("one two"));
}

透過了解@MockBean、@Mock 和Mockito.mock() 的不同功能,開發人員可以選擇最合適的方法來滿足他們特定的模擬需求,從而實現高效且有效的測試。

以上是@MockBean、@Mock 或 Mockito.mock():您應該選擇哪種模擬方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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