@MockBean用法詳解

本文參考自官方文檔

@MockBean 註解可用於 Spring容器中,可以用於類級別的註解或者配置類(@Configuration classes)。可以用於Spring 中的 測試類。

Mocks 可以通過 type 或者 bean name 被註冊。使用過程中中定義的任何現有的相同類型的單個Bean將被該 Mock 替換。 如果 @MockBean 註解的類不存在,它回自動定義並且添加。對於不是bean的依賴,@MockBean會將它模擬成bean與存在的依賴一起添加到上下問中。

例如:

對於實體類:

@Data
public class PkMatchGameConfigRedisEntity {

    private Date pkStartTime;

    private Date pkEndTime;

    private Date pkIntervalStartTime;

    private Date pkIntervalEndTime;

}

使用Service 方法查詢 PkMatchGameConfigRedisEntity 中的數據:

PkMatchGameConfigRedisEntity getPkMatchConfigInfo(Date date);

但是開始時候這個沒配置,就可以使用 @MockBean 註解:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = {AppApiLauncher.class})
@Slf4j
public class GetInfoImplTest {

    @MockBean
    PkMatchGameTaskConfigService pkMatchGameTaskConfigService;

    @Test
    public void getTime() {
        PkMatchGameConfigRedisEntity pkMatchGameConfigRedisEntity = new PkMatchGameConfigRedisEntity();
        pkMatchGameConfigRedisEntity.setPkStartTime(new Date());
        pkMatchGameConfigRedisEntity.setPkEndTime(new Date());
        pkMatchGameConfigRedisEntity.setPkIntervalStartTime(new Date());
        pkMatchGameConfigRedisEntity.setPkIntervalEndTime(new Date());
        when(pkMatchGameTaskConfigService.getPkMatchConfigInfo(new Date())).thenReturn(pkMatchGameConfigRedisEntity);
		/*

		下面就可以使用這些虛擬的數據測試相應功能了
		*/
    }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章