일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kotlin
- algorithm
- 그래프
- 자바
- DFS
- 백트래킹
- 프로그래머스
- 네트워크
- 스프링
- BFS
- Spring
- OS
- TDD
- Brute-force
- 모던자바
- DP
- 코틀린
- LEVEL2
- baekjoon
- java
- lambda
- Java8
- backtracking
- 운영체제
- 자료구조
- back-end
- 프로젝트
- programmers
- 알고리즘
- 백준
- Today
- Total
목록웹 개발 (9)
요깨비's LAB
기존 그래들 설정과 문법 모양이 좀 달라서 스스로 적용하고 기록합니다. build.gradle.kts 부분 dependencies { ... testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient") ... } tasks.withType { useJUnitPlatform() } tasks.test { outputs.dir(snippetsDir) } tasks.asciidoctor { inputs.dir(snippetsDir) dependsOn(tasks.test) } tasks.register("copyHTML", Copy::class) { dependsOn(tasks.findByName("asciidoctor")) f..
1. 가게 추가 이번에는 가게 추가 API를 만들어 보겠습니다. POST 메소드를 이용, /restaurants라는 리소스에 생성 HTTP Status는 201(Created)을 리턴 Header Location이라는 정보에 레스토랑에 대한 Resource를 담아서 보낼 거임 Epmty{} HTTPie 2. UI Layer(Controller) Application Layer(Service) #1 Controller 만들기 RestaurantControllerTest로 먼저 가서 생성 기능에 대한 테스트 코드를 먼저 작성하겠습니다. @Test public void create()throws Exception { Restaurant restaurant = new Restaurant(1234L,"BeRyon..
지난번에 ControllerTest를 만들면서 우리가 테스트하고자 하는 것 외에 여러개의 객체가 동시에 주입되는 것을 확인했습니다. 이 경우에는 우리가 테스트하고자 하는 대상 외에 것들에 대한 의존성이 커서 우리가 테스트에 집중하기가 어려웠습니다. 그리고 하나의 테스트를 통과시키기 위해 의존하는 부분들을 모두 만들어줘야 했습니다. 이러한 어려움을 해결하기 위해 사용하는 것이 바로 MockObject입니다. 1. Mokito 스프링은 기본적으로 POJO 방식의 자바 오브젝트를 권장합니다. 그래서 Mokito와 같은 라이브러리를 제공합니다. 코드를 통해 살펴보도록 하겠습니다. @RunWith(SpringRunner.class) @WebMvcTest(RestaurantController.class) // Re..
1. 의존 관계: 둘 이상의 객체가 서로 협력하는 방법 A는 B에 의존 = A는 B를 사용 (하지만 이것은 문제가 됨!) -> B의 변화가 A에 영향을 끼치기 때문 조금 더 구체적인 사례를 위해 저희가 지금 개발하고 있는 프로젝트에 비유하겠습니다. 저희는 현재 RestaurantController를 개발했습니다. RestaurantController는 RestaurantRepository를 사용합니다. 즉, Controller는 Repository에 의존하고 있다는 뜻이기도 합니다. @RestController public class RestaurantController { private RestaurantRepository repository = new RestaurantRepository(); // ..
1. 가게 상세 GET방식 /restaurants/{id} { "id":2019, "name":"식당", "address":"골목" } 형태의 JSON값 반환 2. Code 구현 I. 컨트롤러 단 구현 1. RestaurantControllerTest 작성 @RunWith(SpringRunner.class) @WebMvcTest(RestaurantController.class) // Restaurant 컨트롤러를 테스트하겠다는 어노테이션 public class RestaurantControllerTest { @Autowired private MockMvc mvc; // 이전 내용 @Test public void list() throws Exception { ... } @Test public void de..
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; im..
1. TDD(테스트 주도 개발/목표 주도 개발) 우리가 목표를 달성했는지 어떻게 알수 있죠? 네. 바로 테스트를 해보는 겁니다. 이 테스트를 통과하면 목표를 달성한 것이고, 통과하지 못하면 목표를 달성하지 못한 것이죠. 그리고 우리가 테스트를 하려면 어떻게 해야하죠? 개발자가 아닌 사용자의 입장에서 사용해봐야 하죠? 그래서 사용자 중심 개발이기도 합니다. 우리가 TDD를 하는 이유는 "올바르게 작동하는 깔끔한 코드를 만들기 위해" 입니다. 그렇다면 이것을 어떻게 실천할 수 있을까요? 우선 올바르게 작동하도록 코드를 만듭니다. 그리고 이거를 깔끔하게 작동하는 코드가 되도록 Refactoring을 해줍니다. 리펙토링은 작동하는 로직은 그대로 두면서 내부 구현을 바꾸는 것을 의미합니다. 이것을 위해 올바르게 ..