@RequestParam은
외부에서 API로 넘긴 파라미터를 가져오는 어노테이션입니다.
@RequestParam("가져올 데이터의 이름") [데이터타입] [가져온 데이터를 담을 변수]
HelloResponseDto.java
응답 데이터를 받을 dto 클래스입니다.
package com.yeony.web.springbootwebproject.web.dto;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class HelloResponseDto {
private final String name1;
private final int amount1;
}
HelloResponseDtoTest.java
dto에 적용된 롬복이 잘 작동하는지
확인하기 위한 테스트 코드입니다.
package com.yeony.web.springbootwebproject.web.dto;
import org.junit.Test;
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
public class HelloResponseDtoTest {
@Test
public void 롬북_기능_테스트(){
//given
String name="yeony";
int amount=1000;
//when
HelloResponseDto dto=new HelloResponseDto(name,amount);
//then
assertThat(dto.getName1()).isEqualTo(name);
assertThat(dto.getAmount1()).isEqualTo(amount);
}
}
HelloController.java
새로 만든 ResponseDto를 사용하기 위해
코드를 추가합니다.
외부에서 name1이라는 이름으로 넘긴 파라미터를 변수 Name에 저장합니다.
package com.yeony.web.springbootwebproject.web;
import com.yeony.web.springbootwebproject.web.dto.HelloResponseDto;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello";
}
@GetMapping("/hello/dto")
public HelloResponseDto helloResponseDto(@RequestParam("name1") String name,
@RequestParam("amount1") int amount){
return new HelloResponseDto(name,amount);
}
}
HelloControllerTest.java
package com.yeony.web.springbootwebproject.web;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@RunWith(SpringRunner.class)
@WebMvcTest(controllers = HelloController.class)
public class HelloControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void hello가_리턴된다() throws Exception {
String hello="hello";
mvc.perform(MockMvcRequestBuilders.get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string(hello));
}
@Test
public void helloDto가_리턴된다() throws Exception{
String name="yeony";
int amount=1000;
mvc.perform(
MockMvcRequestBuilders.get("/hello/dto")
.param("name1",name)
.param("amount1",String.valueOf(amount)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.name1",is(name)))
.andExpect(jsonPath("$.amount1",is(amount)));
}
}
참고서적 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
'여니의 프로그래밍 study > Spring & Spring Boot' 카테고리의 다른 글
[스프링부트] JPA가 무엇이고, 왜 써야 하는가!? (0) | 2022.03.21 |
---|---|
[스프링부트] MockMvc 관련 메소드 (0) | 2022.03.21 |
[스프링부트] error: variable name not initialized in the default (0) | 2022.03.21 |
[스프링부트] assertThat 인식 안되는 문제 해결 (0) | 2022.03.21 |
[스프링부트] 롬북(lombok)의 개념, 설치 방법 | maven repository (0) | 2022.03.21 |