-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[junwoo.choi] feat : (testCode) queryParam initBinding
- Loading branch information
Showing
4 changed files
with
157 additions
and
0 deletions.
There are no files selected for viewing
17 changes: 17 additions & 0 deletions
17
testCode/src/test/java/com/example/testcode/study/request_body_test/RequestController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package com.example.testcode.study.request_body_test; | ||
|
||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
@RestController | ||
public class RequestController { | ||
|
||
@GetMapping("/primitive-test") | ||
// public ResponseEntity<RequestDto> getTest(@RequestBody RequestDto requestDto) { | ||
public ResponseEntity<RequestDto> getTest(RequestDto requestDto) { | ||
ResponseEntity<RequestDto> ok = ResponseEntity.ok(requestDto); | ||
return ok; | ||
} | ||
|
||
} |
107 changes: 107 additions & 0 deletions
107
...src/test/java/com/example/testcode/study/request_body_test/RequestControllerUnitTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
package com.example.testcode.study.request_body_test; | ||
|
||
import com.fasterxml.jackson.databind.ObjectMapper; | ||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; | ||
import org.junit.jupiter.api.BeforeEach; | ||
import org.junit.jupiter.api.Test; | ||
import org.junit.jupiter.api.extension.ExtendWith; | ||
import org.mockito.InjectMocks; | ||
import org.mockito.junit.jupiter.MockitoExtension; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.converter.ByteArrayHttpMessageConverter; | ||
import org.springframework.http.converter.FormHttpMessageConverter; | ||
import org.springframework.http.converter.StringHttpMessageConverter; | ||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; | ||
import org.springframework.http.converter.xml.SourceHttpMessageConverter; | ||
import org.springframework.test.context.ActiveProfiles; | ||
import org.springframework.test.web.servlet.MockMvc; | ||
import org.springframework.test.web.servlet.ResultActions; | ||
import org.springframework.test.web.servlet.setup.MockMvcBuilders; | ||
import org.springframework.util.LinkedMultiValueMap; | ||
import org.springframework.util.MultiValueMap; | ||
import org.springframework.web.method.annotation.RequestParamMapMethodArgumentResolver; | ||
import org.springframework.web.method.support.HandlerMethodArgumentResolver; | ||
import org.springframework.web.method.support.HandlerMethodArgumentResolverComposite; | ||
import org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor; | ||
import org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor; | ||
import org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor; | ||
|
||
import java.util.Arrays; | ||
import java.util.List; | ||
|
||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; | ||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; | ||
|
||
@ExtendWith(value = MockitoExtension.class) | ||
@ActiveProfiles("test") | ||
public class RequestControllerUnitTest { | ||
|
||
private static final String PATH = "/primitive-test"; | ||
private MockMvc mockMvc; | ||
private ObjectMapper objectMapper; | ||
@InjectMocks | ||
private RequestController requestController; | ||
|
||
@BeforeEach | ||
void setUp() { | ||
setUpMockMvcStandAlone(); | ||
setUpObjectMapper(); | ||
} | ||
|
||
private void setUpObjectMapper() { | ||
objectMapper= new ObjectMapper().registerModule(new JavaTimeModule()); | ||
} | ||
|
||
private void setUpMockMvcStandAlone() { | ||
// HandlerMethodArgumentResolverComposite handlerMethodArgumentResolverComposite = new HandlerMethodArgumentResolverComposite(); | ||
// handlerMethodArgumentResolverComposite.clear(); | ||
// ServletModelAttributeMethodProcessor servletModelAttributeMethodProcessor = new ServletModelAttributeMethodProcessor(false); | ||
// handlerMethodArgumentResolverComposite.addResolvers(new RequestResponseBodyMethodProcessor(List.of(new MappingJackson2HttpMessageConverter()))); | ||
// handlerMethodArgumentResolverComposite.addResolver(new HandlerMethodArgumentResolverComposite()); | ||
// handlerMethodArgumentResolverComposite.addResolver(servletModelAttributeMethodProcessor); | ||
mockMvc = MockMvcBuilders.standaloneSetup(requestController) | ||
.setControllerAdvice(WebControllerAdvice.class) | ||
// .setCustomArgumentResolvers(new HandlerMethodArgumentResolverComposite()) | ||
// .setMessageConverters(new MappingJackson2HttpMessageConverter()) | ||
// .setCustomArgumentResolvers(handlerMethodArgumentResolverComposite) | ||
.build(); | ||
} | ||
|
||
@Test | ||
public void controller_content_test() throws Exception { | ||
RequestDto requestDto = new RequestDto("junwoo", 1, 2); | ||
String requestBody = objectMapper.writeValueAsString(requestDto); | ||
String responseBody = objectMapper.writeValueAsString(requestDto); | ||
ResultActions perform = mockMvc.perform(get(PATH) | ||
.queryParam("requestDto", requestBody) | ||
.contentType(MediaType.APPLICATION_JSON)); | ||
|
||
perform.andExpect(status().isOk()) | ||
.andExpect(content().contentType(MediaType.APPLICATION_JSON)) | ||
// .andExpect(content().string(responseBody)) | ||
.andDo(print()); | ||
} | ||
|
||
@Test | ||
public void controller_params_test() throws Exception { | ||
RequestDto requestDto = new RequestDto("junwoo", 1, 2); | ||
String responseBody = objectMapper.writeValueAsString(requestDto); | ||
MultiValueMap<String, String> params = new LinkedMultiValueMap<>(); | ||
params.put("name", Arrays.asList("junwoo")); | ||
params.put("ps", Arrays.asList("1")); | ||
params.put("pn", Arrays.asList("2")); | ||
|
||
ResultActions perform = mockMvc.perform(get(PATH) | ||
.params(params) | ||
.contentType(MediaType.APPLICATION_JSON) | ||
.accept(MediaType.APPLICATION_JSON)); | ||
|
||
perform.andExpect(status().isOk()) | ||
.andDo(print()) | ||
.andExpect(content().contentType(MediaType.APPLICATION_JSON)) | ||
.andExpect(content().json(responseBody)); | ||
} | ||
|
||
} |
18 changes: 18 additions & 0 deletions
18
testCode/src/test/java/com/example/testcode/study/request_body_test/RequestDto.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.example.testcode.study.request_body_test; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
import lombok.Setter; | ||
|
||
@Getter | ||
//@Setter | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public class RequestDto { | ||
|
||
private String name; | ||
private int ps; | ||
private int pn; | ||
|
||
} |
15 changes: 15 additions & 0 deletions
15
testCode/src/test/java/com/example/testcode/study/request_body_test/WebControllerAdvice.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.example.testcode.study.request_body_test; | ||
|
||
import org.springframework.web.bind.WebDataBinder; | ||
import org.springframework.web.bind.annotation.InitBinder; | ||
import org.springframework.web.bind.annotation.RestControllerAdvice; | ||
|
||
@RestControllerAdvice | ||
public class WebControllerAdvice { | ||
|
||
@InitBinder | ||
public void initBinder(WebDataBinder binder) { | ||
binder.initDirectFieldAccess(); | ||
} | ||
|
||
} |