더보기
<스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 이동욱> 책을 활용해
공부한 내용을 정리할 예정입니다.
1. 응답 Dto 생성 및 롬복 기능 테스트
먼저 web 패키지에 dto 패키지를 추가합니다.
앞으로 모든 응답 Dto는 이 Dto 패키지에 추가됩니다.
HelloResponseDto를 생성합니다.
package com.hyemcomi.springboot.web.dto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name;
private final int amount;
}
- @Getter : 선언된 모든 필드의 get 메소드를 생성해 주는 어노테이션
- @RequiredArgsConstructor : 선언된 모든 final필드가 포함된 생성자를 생성해 준다.
final이 없는 필드는 생성자에 포함되지 않는다.
생성한 Dto에 적용된 롬복이 잘 작동하는지 테스트 코드를 작성해 확인합니다.
HelloResponseDtoTest 클래스를 생성합니다.
package com.hyemcomi.springboot.web.dto;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Test;
public class HelloResponseDtoTest {
@Test
public void 롬복_기능_테스트(){
//given
String name = "test";
int amount = 1000;
//when
HelloResponseDto dto = new HelloResponseDto(name,amount);
//then
assertThat(dto.getName()).isEqualTo(name);
assertThat(dto.getAmount()).isEqualTo(amount);
}
}
- assertThat : assertj라는 테스트 검증 라이브러리의 검증 메소드, 검증하고 싶은 대상을 메소드 인자로 받음
- isEqualTo : assertj의 동등 비교 메소드, assetThat에 있는 값과 isEqualTo의 값을 비교해서 같을 때만 성공
테스트에 실패한다면 그레이들 버전문제일 수 있습니다. (인텔리제이 기본 버전이 5로 설정되어 있는듯?)
터미널 창을 열어서 아래 명령을 입력해 그레이들 버전을 책 기준 4.8에 맞춰주고 다시 실행하면 테스트에 성공합니다.
gradlew wrapper --gradle-version 4.10.2
테스트를 실행시켜주면 아래와 같이 성공한 것을 볼 수 있습니다.
2. HelloController에 ResponseDto를 활용하도록 수정
위의 롬복 기능 테스트에서 get메소드와 @RequiredArgsConstructor로 생성자가 자동으로 생성되는 것을 확인했습니다.
HelloController에 새로 만든 ResponseDto를 사용하도록 코드를 추가해줍니다.
@GetMapping("/hello/dto")
public HelloResponseDto helloDto(@RequestParam("name") String name,
@RequestParam("amount") int amount){
return new HelloResponseDto(name, amount);
}
- RequestParam : 외부에서 API로 넘긴 파라미터를 가져오는 어노테이션
HelloControllerTest에 추가된 API를 테스트하는 코드를 추가합니다.
hello가_리턴된다 아래에 테스트 코드를 추가해주면 됩니다.
@Test
public void helloDto가_리턴된다() throws Exception {
String name = "hello";
int amount = 1000;
mvc.perform(
get("/hello/dto")
.param("name", name)
.param("amount", String.valueOf(amount)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name", is(name)))
.andExpect(jsonPath("$.amount", is(amount)));
}
- param : API 테스트할 때 사용될 요청 파라미터를 설정, 값은 String만 허용된다.
- jsonPath : JSON 응답값을 필드별로 검증할 수 있는 메소드이다.
$를 기준으로 필드명을 명시한다.
추가된 테스트를 실행시키면 정상적으로 테스트가 통과되는 것을 확인할 수 있다.
'Web > SpringBoot' 카테고리의 다른 글
[SpringBoot] 4. 프로젝트에 Spring Data Jpa 적용시키기 (0) | 2020.02.14 |
---|---|
[SpringBoot] JPA와 Spring Data JPA (0) | 2020.02.14 |
[SpringBoot] 인텔리제이에 롬복 설치하기 (0) | 2020.02.12 |
[SpringBoot] 2. 테스트 코드 작성해보기 (0) | 2020.02.10 |
[Spring Boot] 1. 인텔리제이, 스프링 부트 시작하기 (0) | 2020.02.10 |