LOG
- 네오, 에밀, 망고, 토리, 포이, 여우, 주노와 함께 점심을 먹었다. 원래 토도로끼에 갈 생각이었는데 사람들이 너무 많아서 네오가 아는 곳으로 제육을 먹으러 갔다. 네오와 같이 앉아서 이야기를 했는데 영화에 대한 이야기를 하다가 종교에 대한 이야기를 하게 됐다. 나와 가치관이 비슷한 부분이 많아서 되게 재밌게 이야기 했다 ㅋㅋㅋ
- 박스터, 주드, 망고, 토리, 포이와 교촌치킨에서 저녁을 먹었다. 살면서 교촌치킨 콤보는 먹어본 적 없는데 처음으로 먹어봤다. 그렇지만 역시 콤보 같이 뼈가 있는 메뉴는 먹기 귀찮아서 많이 먹기 힘들다..ㅋㅋㅋ
- 어쩌다보니 금요일 약속에 에밀도 끼고 토리도 시간이 된다고 해서 같이 술을 마시기로 했다~~ 감기가 거의 다 나아서 내일 술을 마시는 건 괜찮을 거 같다. 재밌겠다~
- 머리를 자르려고 미용실을 예약했다. 머리를 기르다가 못해먹겠어서..ㅋㅋㅋ 다시 단발로 돌아간다. 항상 이정도 길이까지 기르고 잘랐다. 생각보다 머리 기르는 게 쉽지 않다. 하는 김에 폰케이스도 샀다. 지금 살 게 많은데 사러 가기 귀찮아서 미루다 보니까 집에 없는 게 굉장히 많다. 토요일에 한 번에 사러가야겠다.
배운 것
- TEXT와 VARCHAR의 차이점에 대해 정리했다: text-vs-varchar
- 허브신의 코드를 보고
@WebMvcTest
에 대해 배웠다.
@WebMvcTest(RacingCarController.class)
WebMvcTest 어노테이션을 달아준다.
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@MockBean
private RacingCarService racingCarService;
@Mock
RandomMoveStrategy randomMoveStrategy;
@Test
void play_메서드가_적절한_형식을_반환한다() throws Exception {
final PlayRequest playRequest = new PlayRequest("브리,토미,브라운", 1);
final String request = objectMapper.writeValueAsString(playRequest);
Car bri = new Car("브리");
Car tomi = new Car("토미");
Car brown = new Car("브라운");
List<Car> cars = List.of(bri);
final PlayResponse playResponse = PlayResponse.of(
RacingCarWinnerDto.of(cars),
List.of(
RacingCarStatusDto.from(bri),
RacingCarStatusDto.from(tomi),
RacingCarStatusDto.from(brown)
) );
// given
given(randomMoveStrategy.isMovable()).willReturn(true);
given(racingCarService.play(any(PlayRequest.class)))
.willReturn(playResponse);
// then
mockMvc.perform(post("/plays")
.content(request)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$.winners[0]").value("브리"))
.andExpect(jsonPath("racingCars", hasSize(3)))
.andExpect(jsonPath("$.racingCars[0].name").value("브리"))
.andExpect(jsonPath("$.racingCars[0].position").value(0));
}
given()
에 어떤 행동을 하면 willReturn()
에 어떤 값을 리턴할지를 정한다.
RacingCarService
에서 사용하는 RandomMoveStrategy
를 mock 하기 위해 @Mock
어노테이션을 붙여준다.
RacingCarService
는 bean으로 등록되어 있는 클래스이기 때문에 @MockBean
을 붙여준다.
궁금한 것
- mock으로 테스트하는 게 정말 의미가 있을까?
어려웠던 것
느낀 것
- 네오와 이야기를 하면서 내가 왜 살고 있는지에 대해 더 생각해볼 필요가 있다고 느꼈다.
- 알고리즘을 풀어야 될까, 말아야 할까 고민이 된다. 다들 알고리즘을 풀고 있는데, 내 생각에 알고리즘은 꾸준히 많은 문제를 풀면 많이 풀 수 있는 거 같다. 물론 선배는 문제를 한 번에 많이 푸는 기간이 있어야 한다고 하기는 했지만ㅋㅋ 우테코 내에서 알고리즘을 하는 게 맞을지 아닐지 아직 고민중이다.