2023.01.04.WED

ronglong·2023년 1월 4일
0

<슬라이스 테스트(Slice Test)>

  • Spring MVC 기반의 계층별 테스트
  1. API 계층 테스트 (Controller test) - 비지니스 로직까지 수행되는 불완전 테스트 버전
  • @SpringBootTest, @AutoConfigureMockMvc
    : Application Context, Bean 등 테스트 설정을 자동 구성해줌.
  • @Autowired private MockMvc mockMvc;
    : 서버없이 테스트 가능하게 해주는 Spring MVC 테스트 프레임워크
  • @Autowired private Gson gson;
  • header의 Location으로부터 memberId 추출(Long.parseLong)
  • mockMvc.perform(-when 핸들러 메서드 수행-).andExpect(-then 검증-);
@Test
public void test() throws Exception {
        given - 테스트용 request body 생성
        when - MockMvc 객체로 Controller 호출
        then - Controller 핸들러 메서드에서 응답으로 수신한 HTTP Status 및 response body 검증 
    }
  1. 데이터 액세스 계층 테스트
  • 테스트 실행 후, DB를 테스트 케이스 실행 이전으로 되돌려서 깨끗하게 만들 것⭐️
  • @DataJpaTest : @Transactional을 포함하므로 하나의 테스트가 종료되는 시점에 데이터베이스에 저장된 데이터는 rollback됨
  • @Autowired private MemberRepository memberRepository; DI
  • BDD(given 데이터 생성 / when 레포지토리 메서드 실행 / then assert)
  1. 슬라이스 테스트 실습
mockMvc.perform(
                get("/v11/members")
                .param("page", "1")
                .param("size", "10")
        );
  • .andDo(print()) : 요청/응답 전체 메세지 확인
  • @BeforeEach로 given 객체 데이터를 미리 다 post하고 돌렸는데,
    그러면 앞의 테스트에서 데이터가 누적되어 memberId가 안 맞는다.
    @BeforeAll은 static 메서드로만 사용 가능.
    @AfterEach로 delete 핸들러 메서드 실행하는 것도 추가해봤으나, PK가 GenerationType.IDENTITY로 DB에서 auto_increasement되어서인지, 여전히 숫자가 안 맞음. 사실 id까지 확인할 필요는 없지만...
    DB를 아예 초기화해야 맞을 것 같은데, DB초기화 방법은 모르겠다.
  1. 기타

<느낀 점>
오늘도 아침에 데일리 코딩 포기하고 프로그래머스 쉬운 문제 푸는데, 어제부터 이상하다고 생각했는데 다시 봤더니 C언어로 설정해서 풀고 있었다. ㅋㅋㅋㅋㅋㅋ
어쩐지.. 문제 형식이 좀 이상하더라...
근데 문법이 비슷해서 풀리긴 해가지고, 14문제나 풀고나서 알았음 ㅋㅋㅋㅋㅋ

오늘 분량의 컨텐츠 읽고, 페어 실습 시간 되기 전에 미리 혼자서 해보려고 했는데, 막막해서 걍 멍때리다가 실습 들어갔다.
그리고!! 오늘 예상대로 엄청 잘하시는 페어님을 만나서 버스탔음 ㅎㅎㅎ 룰루~
i'm a happy idiot,,
엄청 잘 알려주셔서 감사했다. 페어 2연타로 지금 버스타고 있는데, 정말 감사하고...
열심히 해야겠다. 새해 버프 좋군.
나는 바보지만,, 끈기있는 바보가 되자. 존버는 승리함,,

0개의 댓글