스프링 부트와 AWS로 혼자 구현하는 웹 서비스 09
작성해둔 코드를 테스트하기 위한 테스트 코드를 작성함
web.dto.PostsApiControllerTest
*PostsApiControllerTest
@Test
public void Posts_updated() throws Exception{
//given
Posts savedPosts = postsRepository.save(Posts.builder()
.title("title")
.content("content")
.author("author")
.build());
Long updateId = savedPosts.getId();
String expectedTitle = "title2";
String expectedContent = "content2";
PostsUpdateRequestDto requestDto = PostsUpdateRequestDto.builder()
.title(expectedTitle)
.content(expectedContent)
.build();
String url = "http://localhost:" + port + "/api/v1/posts/" + updateId;
HttpEntity<PostsUpdateRequestDto> requestEntity = new HttpEntity<>(requestDto);
//when
ResponseEntity<Long> responseEntity =restTemplate.exchange(url, HttpMethod.PUT, requestEntity, Long.class);
//then
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getBody()).isGreaterThan(0L);
List<Posts> all = postsRepository.findAll();
assertThat(all.get(0).getTitle()).isEqualTo(expectedTitle);
assertThat(all.get(0).getContent()).isEqualTo(expectedContent);
}
작성했던, 등록테스트코드 밑에 업데이트/수정 코드를 작성했음
다행히도 테스트가 정상적으로 돌아가고, 테스트의 출력 결과를 살펴보면, update쿼리가 수행된 것을 확인할수 있었음
H2는 로컬 환경, 메모리에서 실행 하기 때문에, 직접 접근을 위해서는 웹 콘솔을 사용해야함
->
*application.properties
spring.h2,console.enable=true
이 코드를 추가해주고
Application클래스에서 main 메소드를 실행해줌 + 웹브라우저에서 http://localhost:8080/h2-console로 접속
음.. 구글링을 해보니 대부분의 사람들이 application.properties -> application.yml로 바꿔서 진행을 하는게 보였다
아무래도 버전이 바뀌면서 많은것이 바뀐것 같다
두 파일을 쓰는 방식도 아예 달라서 잘 찾아보고 작성해서 다시 시도해봐야할것 같다
기존설정
application.properties//
spring.jpa.show_sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57Dialect
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.datasource.hikari.jdbc-url=jdbc:h2:mem://localhost/~/testdb;MODE=MYSQL
spring.h2.console.enable=true
작가님의 깃허브를 참조해서 바꾼 설정
*application.yml
spring:
#JPA 설정
jpa:
database-platform: org.hibernate.dialect.H2Dialect
defer-datasource-initialization: true
hibernate:
ddl-auto: create-drop
properties:
hibernate:
format_sql: true
show_sql: true
#JDBC
datasource:
url: jdbc:h2:mem:testdb
#h2 console
h2:
console:
enabled: true
path: /h2-console
파일의 형식과, 내용을 바꾸고 나니 접속이 된것을 볼 수 있었음
책에서 하라는 대로 URL을 맞춰주고 진행했음 -> connect
Posts 테이블이 정상적으로 노출된것을 볼 수 있었음
간단한 쿼리를 진행 -> 아무것도 없어서 아무것도 나오지 않음
insert문을 가볍게 진행해봄
후에 api를 호출해서 내용을 확인해보니,
insert한 값들이 잘 들어있는것을 볼 수 있었음
한번더 진행을 해봐도 잘 들어가는 것을 볼 수 있음