728x90
반응형
spring boot controller test (mock 버전)
- java source
import org.example.online.domain.SampleIO;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SampleController {
@RequestMapping(value ="test/{id}", method = RequestMethod.GET)
public SampleIO getTestData(@PathVariable("id") Long id) {
SampleIO testIO = SampleIO.builder()
.id(id)
.name("test")
.build();
return testIO;
}
}
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class SampleIO {
private long id;
private String name;
@Builder
public SampleIO(long id, String name) {
this.id = id;
this.name = name;
}
public SampleIO(String name) {
this.name = name;
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleControllerTest {
private MockMvc mockMvc;
@MockBean
private SampleController sampleController;
private SampleIO sampleIO;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(sampleController).build();
sampleIO = SampleIO.builder()
.id(100)
.name("Test")
.build();
}
@Test
public void sampleControllerTest() throws Exception {
/** 100 이라는 값이 들어왔을 때, 아래 값을 주도록 하기. */
given(this.sampleController.getTestData(new Long(100)))
.willReturn(sampleIO);
mockMvc.perform(get("/test/{id}", 100))
.andExpect(status().isOk())
.andExpect(jsonPath("$['name']", containsString("Test")))
.andDo(print());
}
}
build.gradle
compile('org.springframework.boot:spring-boot-starter-web')
testImplementation('org.springframework.boot:spring-boot-starter-test')
장애
- IllegalARgumentException PathVariable name 을 못찾는다는 거였는데.
- 해결방안은 다음 링크 참고
- https://blusky10.tistory.com/386
- 요약하면 PathVariable 에 name 을 명시 PathVariable("id")
- 위와 같이 하면 parsing 가능.
'Spring > boot' 카테고리의 다른 글
spring boot 로그인 실패 시 후속 작업 (리다이렉트) (0) | 2020.10.05 |
---|---|
spring boot localDateTime parsing (0) | 2020.09.11 |
spring boot logback 파일 appender 특정 파일 로그 위치에 로그가 쌓이지 않는 현상 (0) | 2020.09.03 |
spring boot 에서 yml 파일을 읽어서 map object 를 만드는 것 (map 형태) (0) | 2020.07.10 |
[SpringBoot] SpringBoot 에서 Jpa, H2 사용 (application.yml, application.properties) (0) | 2020.07.10 |
댓글