728x90
반응형
컨트롤러를 테스트하면서
URL에 날짜 2개 와, 캠페인ID가 필요했습니다.
그러면 실패코드가 뭐 날짜가 누락된경우, 캠페인아이디가 누락된경우, 아무것도 없는경우 등등 모든경우를 다 하면 너무 많이 나옵니다.
이럴때 사용하는 것이
@ParameterizedTest
@MethodSource
를 사용해주면 됩니다.
테스트 메서드에 다양한 입력값을 전달하며 여러번 실행 할 수 있게하며, 데이터는 외부 메서드 에서 생성되며 Stream API형식으로 반환됩니다.
@ParameterizedTest
@DisplayName("getCampaignDetails() : 파라미터 값 누락")
@WithAuthUser
@MethodSource("invalidGetCampaignDetailsUrl")
void test(String url) throws Exception {
ResultActions resultActions = mockMvc.perform(get(url)
.with(csrf()));
resultActions.andExpectAll(
status().isBadRequest()
).andDo(print());
}
이것이 실패하는 테스트 코드구요. 여기에서 파라미터 값으로 들어가는 것을
static Stream<String> invalidGetCampaignDetailsUrl() {
return Stream.of(
"/api/cod/getMyCampaignDetails",
"/api/cod/getMyCampaignDetails?start=2024-01-01",
"/api/cod/getMyCampaignDetails?campaignId=1",
"/api/cod/getMyCampaignDetails?start=2024-11-01&end=2024-12-31&campaignId=궁금하네"
);
다음과 같이 만들어 주면 됩니다.
테스트를 돌려보면

다음과같이 나오게 됩니다.
반응형
댓글