스프링 부트로 게시판 만들기 -2

BRINCE·2022년 10월 9일
0

Auditing 클래스 생성

게시글 클래스에 설정하지 않았던 값들이 있는데, 바로 글 작성자 / 작성시간 / 수정시간 / 수정자(?) 이다 .

게시글과 댓글 모두 해당 값들이 들어가야 하므로 , 각각 클래스에 선언했던 값들을 다른 클래스를 생성해서 더 보기 좋게 만들어주자.

@EntityListenrs

엔티티 리스너는 엔티티의 변화를 감지하고 테이블의 데이터를 자기가 알아서 조작해주는 역할을 한다.
created_At 이나 modified_At 컬럼 같은 경우에는 글이 작성되고 수정될때 해당 시간값이 알아서 자동으로 입력되게 해야한다. 그걸 수행해준다고 한다.

@DateTimeFormat / @CreatedDate/By

  • @DateTimeFormat : 날짜 시간 형식으로 값을 입력한다. (세부 설정으로 어떻게 값을 저장할지 설정이 가능함.)
  • @CreatedDate/By : 생성 시간과 생성자를 입력해준다. (LastmModified 는 수정시간/수정자)

@MappedSuperclass

해당 필드를 가진 클래스는 게시글과 댓글 클래스 양쪽에서 사용이 되어야한다. 부모 클래스처럼 말이다. 그럴때 쓰인다고 한다 (?)

Auditing Fields 클래스를 작성했으면 게시글, 댓글 클래스에 extends AuditingFields 를 붙여주자 ..

Jpa 설정 클래스 작성

@EnableJpaAuditing 어노테이션을 붙어주어야지 post 메소드로 게시글을 작성할떄, createdAt 이나 By 를 넣지 않아도 알아서 자동으로 값을 넣어준다..

AuditorAware 같은 경우에는 지금은 아직 로그인 기능을 구현 하지 않았기 때문에, 자동으로 들어갈 값을 설정해준다.(생성시간 수정시간 등을 제외한 자동입력값)

JPA 리포지토리 생성

이제 해당 게시글과 댓글을 저장할 저장소를 생성하자.

그냥 이렇게 인터페이스를 만들고 , @RepositoryRestResource 어노테이션을 붙인 후에 JpaRepository 를 상속받게 하고 타입안에 저장할 클래스 이름과 id형식 을 입력하면 된다.

테스트코드 작성

자 이제 저장소와 엔티티까지 다 작성했으니 테스트코드를 작성할 차례다..

Jpa Repository 는 기본적으로 여러 메소드들을 제공하는데 테스트코드에서 쓸 메소드들은 find, save, delete, count 정도 이다.

CRUD (Create Read Update Delete) 방식으로 잘 작동하는지 테스트코드를 작성한다.

Given When Then 방식으로 테스트 코드를 작성한다.

일단 테스트 코드에 기본적인 생성자와 어노테이션을 설정해준다.
테스트 클래스에는 무조건 생성자에 Autowired 를 붙여야지 에러가 안난다 ..
(자동입력값을 위해 JpaConfig.class 를 임포트 해주고 DataJpaTest 어노테이션을 붙여준다.)

given when then 방식으로 테스트 코드를 작성해나간다.
작성 전 게시글 갯수를 count 메소드로 불러와주고,
Article 클래스에서 선언한 of 생성자로 제목과 내용, 해시태그를 입력해준다. (나머지 작성시간 작성자는 자동으로 값이 입력된다.)
그리고 Article Repository 에서 save 메소드를 호출한후에 article 객체를 넣어준다.

assertThat 으로 이전 게시글 갯수에서 +1이 됐는지 테스트 해준다.

이런 방식으로 게시글 생성/ 수정/ 삭제/ 불러오기가 되는지 테스트를 해주면 된다.

update : 기존 게시글을 가져와서 세터로 변경을 원하는 부분을 변경해준뒤에 , .hasFieldOrPropertyWithValue 메소드로 변경된 컬럼 이름과 변경값을 입력했을때 boolean 값을 리턴하도록 테스트를 작성하면 된다.

delete : create와 마찬가지로 기존 게시글 갯수에서 삭제후 갯수가 -1 이 되었는지를 테스트하면 된다.

selete : 게시글 전체를 리스트로 가져올 수 있는지를 확인하면 된다 .

profile
자스코드훔쳐보는변태

0개의 댓글