本文參考自官方文檔
@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);
/*
下面就可以使用這些虛擬的數據測試相應功能了
*/
}