본문 바로가기
Spring

[Spring] TDD Controller 변수가 RequestParam 이 많을때

by windy7271 2024. 12. 31.
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=궁금하네"
    );

 

다음과 같이 만들어 주면 됩니다.

 

테스트를 돌려보면

 

 

다음과같이 나오게 됩니다.

반응형

댓글