inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Chương trình phát triển hài hước của Hodolman (SpringBoot, Vue.JS, AWS)

Lưu bài viết 2 - Tách lớp

PostCreate 기본생성자 없이 테스트 통과에 대하여

617

blackjune

13 câu hỏi đã được viết

1

작성글 저장2 - 클래스 분리에서 PostCreate 테스트 시 기본생성자 없이 테스트 통과가 어떻게 되는지 궁금합니다.

커뮤니티에서 저처럼 이 부분에 대해 궁금증이 생겨 질문한 글을 보았습니다.

호돌맨님이 그 글에서 링크 건 동욱님 글도 보고 여러 가지 찾아봤는데요.

제 나름대로 결론을 지은 것을 말씀드리면

기본 생성자가 없을 때는 ObjectMapper가 인스턴스를 생성해 직렬화를 진행할 때 인자와 멤버 변수 간의 관계를 몰라서 그런게 아닐까 생각이 됩니다

그리고 호돌맨님의 답변 중 기본 생성자 없이 title, content에 내용을 넣으려면 어떻게 해야하는지에 대해서 고민해봐야 된다고 하셨는데요

저는 일단 아래와 같은 방법을 사용해서 테스트를 통과했습니다.

@ToString
@Getter
public class PostCreate {

    @NotBlank(message = "제목은 필수입니다!")
    public String title;
    @NotBlank(message = "내용은 필수입니다!")
    public String content;

    @Builder
    @JsonCreator
    public PostCreate(@JsonProperty("title") String title, @JsonProperty("content") String content) {
        this.title = title;
        this.content = content;
    }
}

 

  1. 혹시 제가 한 방법말고 기본생성자 없이 내용을 넣는 방법을 찾으셨는지? 궁금하고

  2. 어떻게 호돌맨님은 기본생성자 없이 테스트가 통과 됐는지.. 궁금합니다...

vue.js JPA aws vuejs jpa spring-security spring-boot Spring Security

Câu trả lời 2

2

blackjune

추가 적으로 JsonCreator를 이용하지 않아도 기본 생성자를 private으로 바꿔서 진행해도 될 것 같습니다

작은 부분이라고 생각했는데 이 부분에 대해서 공부하면서 자바의 직렬화와 역직렬화, 그리고 불변성 보장에 대한 것 등 많은 것을 공부할 수 있었습니다!

0

hodolman888675

안녕하세요. 호돌맨입니다.

@Setter
@Getter
@ToString
public class PostCreate {

    @NotBlank(message = "타이틀을 입력하세요.")
    private String title;

    @NotBlank(message = "콘텐츠를 입력해주세요.")
    private String content;

    @Builder
    public PostCreate(String title, String content) {
        this.title = title;
        this.content = content;
    }
}

위 코드에서는 생성자를 통해 title, content 값이 들어갑니다.

https://www.inflearn.com/questions/752002/postcreate-%EA%B8%B0%EB%B3%B8-%EC%83%9D%EC%84%B1%EC%9E%90-%EB%AC%B8%EC%A0%9C-%EC%A7%88%EB%AC%B8%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4

혹시 원하신는 답변이 이건... 아니시죠?

미안합니다.

Deprecated 관련 사항들

0

100

2

깃헙 collaboator 초대 관련

0

86

1

강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다

0

157

2

logout 후에 login 페이지 이동은 어디서 시켜주는건가요?

0

229

1

다중 데이터를 삭제 할 때

0

270

2

querydsl Q class 이슈

0

413

2

Windows WSL Vue 설정

2

246

1

Dip, @transactional

0

187

1

[vite] http proxy error: /auth/login

0

1040

2

로그인 하고 나서 GET요청으로 메인페이지 요청

0

234

2

GitHub Collaborator 초대 관련

0

256

2

Window에서 Vue.js 설정

0

321

2

(솔루션 수정)'tsyringe' Error: TypeInfo not known for "클래스명"

0

712

2

collaboator로 초대받을 수 있을까요??

0

283

2

SecurityMockContext 로부터 유저 정보를 가져오기

0

260

1

given 부분이 길어질 때 어떻게 처리하면 좋을까요?

0

317

1

섹션9 프론트의 코드를 보고싶습니다,,,

0

423

1

Spring Security - defaultSuccessUrl 질문

0

624

1

강의 화면이 나오지 않습니다. 음성과 자막만 나와요

0

302

1

JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ

0

689

2

ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상

0

1178

2

섹션10 언제 나오나요?

0

482

1

CommentService에서 Repository를 호출하지 않는데도

0

340

1

Editor....를 활용한 패턴에 질문있습니다.

0

492

1