Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링
- kotlin
- back-end
- Java8
- algorithm
- baekjoon
- LEVEL2
- backtracking
- 모던자바
- 프로젝트
- DP
- java
- TDD
- OS
- Brute-force
- 코틀린
- 자바
- DFS
- programmers
- 그래프
- 백트래킹
- BFS
- lambda
- 프로그래머스
- 네트워크
- Spring
- 백준
- 운영체제
- 자료구조
- 알고리즘
Archives
- Today
- Total
요깨비's LAB
[Spring Boot, Back-End] 4. 가게 목록 구현 본문
1. RestaurantController Class/Test Class 작성
RestaurantController 클래스와 이를 테스트하기 위한 RestaurantControllerTests junit 클래스를 작성합니다.
public class RestaurantController {
}
import static org.junit.Assert.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
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;
@RunWith(SpringRunner.class)
@WebMvcTest(RestaurantController.class) // Restaurant 컨트롤러를 테스트하겠다는 어노테이션
public class RestaurantControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void list() throws Exception {
mvc.perform(get("/restaurants")).andExpect(status().isOk());
}
}
RestaurantController 클래스를 작성하지 않았기 때문에 Red 상태입니다. 이제 컨트롤러를 구현해보죠
@RestController
public class RestaurantController {
@GetMapping
public List<Restaurant> list() {
List<Restaurant> restaurants = new ArrayList<>();
return restaurants;
}
}
Restaurant에는 id값, 이름, 주소가 있다고 가정하겠습니다. 그러면 먼저 RestaurantControllerTest 클래스를 작성합시다.
@RunWith(SpringRunner.class)
@WebMvcTest(RestaurantController.class) // Restaurant 컨트롤러를 테스트하겠다는 어노테이션
public class RestaurantControllerTest {
@Autowired
private MockMvc mvc;
@Test
public void list() throws Exception {
mvc.perform(get("/restaurants")).andExpect(status().isOk())
.andExpect(content().string(containsString("\"id\":1004")))
.andExpect(content().string(containsString("\"name\":\"Mcdonald\"")))
.andExpect(content().string(containsString("\"address\":\"Seoul\"")));
}
}
그다음 테스트가 성공하도록 Restaurant 클래스의 구현하지 않은 부분을 수정해줍니다.
public class RestaurantTests {
@Test
public void creation() {
Restaurant restaurant = new Restaurant(1004L,"Mcdonald","Seoul");
assertThat(restaurant.getId(), is(1004L));
assertThat(restaurant.getName(), is("Mcdonald"));
assertThat(restaurant.getAddress(), is("Seoul"));
}
}
코드를 작성해줍니다. 구현이 되지 않아 에러가 발생하는 부분들을 구현해 나갑니다.
public class Restaurant {
private Long id;
private String name;
private String address;
public Restaurant(String name) {
this.name = name;
}
public Restaurant(String name, String address) {
// TODO Auto-generated constructor stub
this.name = name;
this.address = address;
}
public Restaurant(Long id,String name, String address) {
// TODO Auto-generated constructor stub
this.name = name;
this.address = address;
this.id = id;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public String getInformation() {
// TODO Auto-generated method stub
return name + " in " + address;
}
}
@RestController
public class RestaurantController {
@GetMapping("/restaurants")
public List<Restaurant> list() {
List<Restaurant> restaurants = new ArrayList<>();
restaurants.add(new Restaurant(1004L,"Mcdonald","Seoul"));
return restaurants;
}
}
이제는 테스트 케이스를 통과할 수 있습니다. 이제 실제로 프로젝트를 실행하여 localhost:8080/restaurants로
접속하면 올바르게 Restaurant 값들을 JSON 값으로 반환하는 것을 확인할 수 있습니다.
'웹 개발 > 스프링 부트 프로젝트(레스토랑 예약)' 카테고리의 다른 글
[Spring Boot, Back-End] 번외. 의존성 주입 (0) | 2020.01.07 |
---|---|
[Spring Boot, Back-End] 5. 가게 상세 구현 (0) | 2020.01.07 |
[Spring Boot, Back-End] 3. Test Driven Development (0) | 2019.12.30 |
[Spring Boot, Back-End] 2. 프로젝트 시작 (0) | 2019.12.30 |
[Spring Boot, Back-End] 1. 어떻게 만들 것인가 (0) | 2019.12.30 |
Comments