프로젝트/스프링 부트와 AWS로 혼자 구현하는 웹 서비스_실습

스프링 부트와 AWS로 혼자 구현하는 웹 서비스 09

dudung__ 2023. 8. 16. 13:30

작성해둔 코드를 테스트하기 위한 테스트 코드를 작성함

 

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한 값들이 잘 들어있는것을 볼 수 있었음

 

한번더 진행을 해봐도 잘 들어가는 것을 볼 수 있음