티스토리 뷰
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 static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.hamcrest.Matchers.is;
@RunWith(SpringRunner.class)
@WebMvcTest
public class HelloControllerTest {
@Autowired
private MockMvc mvc; // mvc 테스트 할때 허구의 인스턴스를 만들어줌
@Test
public void hello가_리턴된다() throws Exception {
String hello = "hello";
mvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string(hello)); // return값을 content()로 받을 수 있음, 이값을 String hello와 비교하는것임
}
@Test
public void helloDto가_리턴된다() throws Exception{
//given
String name="name";
int amount =1;
//when
mvc.perform(get("/hello/dto") // get으로 uri에 요청
.param("name",name) // .param : 파라미터를 넣어줌
.param("amount",String.valueOf(amount))) // 전부 String 형태로 들어가서 다른 건 변환 시켜줘야함
//then
.andExpect(status().isOk()) // mvc.perform 의 결과를 검증, http header status검증, 200, 404, 500 등을 검증하는것임..!!!!!!
.andExpect(jsonPath("$.name", is(name))) // json응답값을 필드별로 검증할 수 있는 메소드
.andExpect(jsonPath("$.amount", is(amount))); // $.쓰고 필드명쓰기
}
}