페어 레오와 함께 장바구니 미션을 진행했다.
💡 소프트스킬?
소프트 스킬이란 다른 사람과 함께 일하고 다른 사람들과 교류하는지를 설명하는 대인관계 기술로 충돌 해결, 비판적 사고, 공감, 조직, 리더십, 팀워크, 시간관리 등을 포함한다.
지난 미션과 동일하게 페어가 해주는 이걸 왜 이렇게 사용해야해?
라는 질문이 좋았다.
사소한 개념이라도 막힘이 있을 때 알고 넘어가려는 성향이 좋았다.
페어프로그래밍을 진행하면서 휴식시간을 잘 책정하지 못하는 습관이 있었는데 페어가 이를 잘 경계해줘서 컨디션을 길게 잘 유지할 수 있었다.
💡 하드스킬?
특별하게 훈련할 수 있는 기술로 각 분야별로 해당하는 요소가 다르다.
엔지니어링의 경우 프로그래밍언어(Java, Python 등), 클라우드 컴퓨팅, 서버 유지보수 등을 포함한다.
MockMvc를 이용할 때 content 부분에 json 형태의 String이 들어간다.
미리 생성해둔 Request 객체를 이용해서 요청을 만들어주고싶다면 ObjectMapper의 writeValueAsString()
메소드를 사용하는 방법이 있다.
...
ProductRequest request = new ProductRequest("img", "name", 1000);
String jsonRequest = objectMapper.writeValueAsString(request);
mockMvc.perform(put("/products/{id}", 1L)
.content(jsonRequest)
.contentType(MediaType.APPLICATION_JSON_VALUE))
.andExpect(status().isOk());
...
왜 Controller에서 SpringBootTest를 하지 않았지?
주노 : 다양한 레이어를 거치는 테스트가 되면서 향후 기능 변경에 따라 해당 테스트의 유지보수가 어려워 질 것 같다.
레오 : 컨트롤러는 요청과 Service를 맵핑해주는 역할을 수행하기 때문에 Controller보다는 Service에서 통합테스트 수행이 설득력 있다.
Controller에서 통합 테스트를 수행한다면 뭐가 좋을까?
주노 : 사용자의 요청에 따른 실제 시나리오를 수행해볼 수 있어서 단위테스트로는 확인할 수 없는 요인을 발견할 수 있다. → 하지만 지금은 서비스 테스트로도 위 내용이 충분히 충당되는 시점인 것 같다.
레오 : 모든 계층을 검증할 수 있다.
@Max
, @Min
의 경우 숫자를 사용하는 필드를 검증하는데 사용된다.
String(숫자 표시), int, byte 등의 최대 길이를 제한하는 것이다.
@Size는 문자열, 배열 등의 크기를 검증하는데 사용된다.