본문 바로가기

내일 배움 캠프

2024-01-16

오늘은 최종프로젝트 13일 차이다.

오늘 진행한 내용은 프로젝트에 필요한 조회 기능을 구현했으며

공연장 조회 API, 공연 정보 단건 조회 API, 공연 정보 카테고리별 페이징 조회 API, 공연장 구역 조회 API, 회차 전체 조회API를 구현했다.

 

어제 새벽까지 진행하면서 구현하고 오늘 공연장 생성 페이지를 구현하고 와이어 프레임에 따라  다음페이지에서 클라이언트가 어떤 방식으로 요청을 보낼지까지 계산하면서 만들어야되기 때문에 여러 수정을 진행했었다.

진행하다보니 치명적인 오류를 발견했다. 와이어프레임을 기준으로 공연 정보를 생성하면 공연을 같이 생성하는데 이렇게 되면 공연과 공연장은 1:1 관계가 된다. 하지만 프로젝트의 구조에서는 즉 ERD를 기준으로는 공연 정보를 생성하고 공연을 1:M으로 설계가 되어있기 때문에 와이어 프레임을 수정해서 페이지를 나누던지 기존에 작성했던 1:1 방식으로 진행할지 고민했다. 기존의 방식대로하면 ERD를 수정해야했고, 수정을 한다면 기존에 작성했던 로직을 전부 수정해야 했다.

2가지의 고민에서 나중을 생각한다면 수정이 맞다고 판단하여 오늘 전반적으로 리펙토링 과정을 진행했고 일단 급한 공연정보와 공연을 분리시켜서 따로 Post 요청에 의해 생성되게끔 로직을 변경했다. 

이후 테스트 코드를 수정하여 테스트를 진행했다. 테스트에서 통과를 하게끔 로직을 작성했지만 테스트 메서드 자체에서 

아래의 . given에 주었던 서비스 로직을 통과할때 로직 내부에 있는 메서드를 아예 통과를 못하는 오류를 발견하여 해결할려고 몇시간이고 수정을 반복했지만 이유를 못찾았다. 혹시나 해서 실제로도 요청을 통해 로직을 수행하고 DB에 저장되는지 테스트를 진행한 결과는 정상적으로 잘 작동했다.

그래서 더 왜 이 오류가 무엇때문에 발생하는지 이유를 못찾았다.

given(placeService.getReferenceById(any(Long.class))).willReturn(place);
given(goodsInfoService.findByGoodsInfoId(any(Long.class))).willReturn(goodsInfo);
given(goodsService.createGoods(
    any(GoodsCreateRequest.class),
    any(Place.class),
    any(GoodsInfo.class)))
    .willReturn(goods);

 현 시점에서 추측되는 아래의 오류는 캐쉬문제로 인해 뭔가 잘못설정된 무언가가 있는것 같다. 아마 내일까지 안된다면 테스트 로직을 변경해서 다시 테스트 해볼 예정이다. 

Wanted but not invoked:
placeService.getReferenceById(
    <any java.lang.Long>
);
-> at com.sparta.ticketauction.domain.place.service.PlaceServiceImpl.getReferenceById(PlaceServiceImpl.java:57)
Actually, there were zero interactions with this mock.

Wanted but not invoked:
placeService.getReferenceById(
    <any java.lang.Long>
);
-> at com.sparta.ticketauction.domain.place.service.PlaceServiceImpl.getReferenceById(PlaceServiceImpl.java:57)
Actually, there were zero interactions with this mock.

'내일 배움 캠프' 카테고리의 다른 글

2024-01-18  (0) 2024.01.19
2024-01-17  (0) 2024.01.18
2024-01-15  (0) 2024.01.16
2024-01-12  (1) 2024.01.13
2024-01-11  (0) 2024.01.12