인프런 커뮤니티 질문&답변

유승현님의 프로필 이미지

작성한 질문수

스프링과 JPA 기반 웹 애플리케이션 개발

회원 가입 리팩토링 및 테스트

mockMvs with 메서드 참조 관련

작성

·

650

0

package com.example.studybin.account;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;


import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
//import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@DisplayName("회원 가입 처리 - 입력값 오류")
@Test
void signUpSubmit_with_wrong_input() throws Exception {
mockMvc.perform(post("/sign-up")
.param("nickname", "soob")
.param("email", "email...")
.param("password", "12345"))
.with(csrf())
.andExpect(status().isOk())
.andExpect(view().name("account/sign-up"));
}

여기 post에서 with method를 찾을 수 없다고
Cannot resolve method 'with' in 'ResultActions'

이렇게 뜨는데 어떻게 해결해야 할까요

해당 패키지는 import하고 있는데 

왜 MockHttpServletRequestBuilder내에 있는 with를 참조 못할까요

패키지 버전 문제 때문에 그런것 같은데 정확히 어떻게 바꿔줘야 할질 모르겠습니다.

답변 2

1

유승현님의 프로필 이미지
유승현
질문자

해당 패키지 내에 with있는것도 확인했는데 

리빌드를 하면 아래 에러가뜹니다.

java: cannot find symbol
  symbol:   method with(org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.CsrfRequestPostProcessor)
  location: interface org.springframework.test.web.servlet.ResultActions

0

유승현님의 프로필 이미지
유승현
질문자

해결했습니다.
코드에 실수가 있었네요
실수 덕분에 패키지도 까보고 좋은경험했습니다