본문 바로가기
개발 관련 학습 및 문제해결

백엔드에서 넘어오는 객체 속성 값 전부 Null이거나 컨트롤러 테스트값이 전부 null 일 때

by 날파리1 2022. 12. 2.

위의 문제를 벌써 몇 번이나 겪는지 모르겠다. 저 디버깅 문제로 사실 6,7번은 겪은 것 같다. 

 

그래서 디버깅 포인트를 간단히 정리해보았다.

 

1. 생성자 확인 해 볼 것

public ClassName(Long id,
             String writer,
             String title,
             String topic,
             String place,
             String time,
             String participants,
             String content,
             Long views,
             Long likes) {
  this.id = id;
  this.writer = writer;
  this.title = title;
  this.topic = topic;
  this.place = place;
  this.time = time;
  this.participants = participants;
  this.content = content;
  this.views = views;
  this.likes = likes;
}

아래와 같이 되어 있을 확률이 높다.

public ClassName(Long id,
             String writer,
             String title,
             String topic,
             String place,
             String time,
             String participants,
             String content,
             Long views,
             Long likes) {
}

2. DTO getter 문제 체크

1. 반환해주는 Dto에 getter 가 없을 확률이 매우 높다.

 

2. Dto에 생성자를 체크해주는 것도 좋다.

 

3.프론트에서 값을 잘 전달하는 지 체크

프론트에서 변수를 백으로 잘 전달해주는지 apiService를 점검해본다.

4. @RequestBody 어노테이션 체크

리퀘스트바디 어노테이션을 컨트롤러에서 변수로 붙여주었는지 체크해주어야한다.

 

1. 컨트롤러 테스트에서 오류날 경우

 SERVICE mocking 안함

컨트롤러 테스트에서 서비스를 mockBean으로 모킹해준 후 given 과 any() 를 이용해서 테스트 해준다.

 

any()를 해주는 이유는 동일한 속성을 가진 객체를 서비스 메소드에 넣어도 별도로 override equal을 해주지 않으면 다르게 취급하므로 테스트가 제대로 통과되지 않을 확률이 높다.

 

 

댓글