Spring Boot Unit 測驗服務層如何回傳頁面內容?如何用一些值模擬這些資料,然后再對其進行測驗?
需要測驗的服務:
@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class CampaignReadServiceImpl02 {
private final CampaignRepository campaignRepository;
public Page<Campaign> getAll(int page, int size) {
Pageable pageable = PageRequest.of(page, size);
Page<Campaign> pages = campaignRepository.findAll(pageable);
return pages;
}
}
在單元測驗中模擬資料的類
@Slf4j
@ExtendWith(MockitoExtension.class)
public class CampaignReadServiceTest {
@Mock
private CampaignRepository campaignRepository;
private CampaignReadServiceImpl02 campaignReadServiceImpl02;
@BeforeEach
public void beforeEach() {
campaignReadServiceImpl02 = new CampaignReadServiceImpl02(campaignRepository);
}
@Test
public void testGetAll02() {
log.info("Testing get all campaigns method");
//this need to have content data inside of page.getContent(), need to be added
Page<Campaign> page = Mockito.mock(Page.class);
Mockito.when(campaignRepository.findAll(Mockito.any(Pageable.class))).thenReturn(page);
Page<Campaign> result = campaignReadServiceImpl02.getAll(2, 2);
Assertions.assertNotNull(result);
Mockito.verify(campaignRepository, Mockito.times(1)).findAll(Mockito.any(Pageable.class));
Mockito.verifyNoMoreInteractions(campaignRepository);
}
}
當Service存盤庫注入Service時如何模擬Page<Campaign> page = Mockito.mock(Page.class);獲取..result.getContent();
我無法測驗result.getContent(),因為我沒有來自存盤庫的資料,maube 因為我需要將模擬更改Page<Campaign> page為Page.class其他東西?
如何正確模擬 Page<Campaign> page = Mockito.mock(Page.class);稍后將在服務中回傳一些資料:result.getContent().name() 等。
uj5u.com熱心網友回復:
最簡單的方法是創建一個物件而不是模擬類。
Page<TournamentEntity> tournamentEntitiesPage = new PageImpl<>(List.of(obj1, obj2), pageable, 0);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/483694.html
