주뇽's 저장소

[Trouble] JAVA Spring jsonPath 함수 사용 시 에러 본문

웹개발/SpringBoot

[Trouble] JAVA Spring jsonPath 함수 사용 시 에러

뎁쭌 2023. 11. 25. 20:04
728x90
반응형

JUnit4를 이용하여 Controller 기능을 테스트 하는 도중에 책에서 나온 부분과 실제 함수가 달라 오류가 발생했다. 

 

URL 요청에 들어온 파라미터가 제대로 들어왔는지 체크하기 위해 jsonPath 함수를 사용하는데 기존 책은 다음과 같이 작성되어 있다.

package com.spring_jyp_todo.springbootTodoProject.controller;

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.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@RunWith(SpringRunner.class)
@WebMvcTest(controllers = LoginController.class)

public class LoginControllertest {
    @Autowired
    private MockMvc mvc;

    public void 파라메터리턴() throws Exception{
        mvc.perform(get("/login")
                .param("name", "PARK"))
                .andExpect(status().isOk())
                .andExpect(jsonPath("$.name", is("PARK")));
    }
}

여기서 jsonPath("$,name", is("PARK")); 을 하면 is라는 함수가 없다고 나온다 이는 다음과 같이 대체해주면 된다

.andExpect(jsonPath("$.name", ("PARK")).exists());