작성
·
183
0
spring boot 로 프로젝트 만들고 하는중이라서 부트에서 테스트 하고 있는데요.
구글링 해서 테스트 세팅하고 modelAndView 까지 했는데
view 값은 가져오는데 model 값이 안가져와지네요....
@MockBean 으로 Service 를 bean 등록 시키고 Service 에서 getList 할때 뭔가 잘안되는거 같은데
혹시 어떤게 잘못됬는지 확인 가능하신가요 ??
Controller
Service test
Controller test
Constroller test 결과
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
RainD님, Spring Boot로 MVC 테스트를 하시는 과정에서 @MockBean
을 사용해 서비스 레이어를 모킹하고, 컨트롤러에서 모델 값을 제대로 가져오지 못하는 문제를 경험하고 계시군요.
해당 문제는 @MockBean
으로 등록된 BoardService
의 getList()
메서드에 대한 동작을 명시적으로 정의하지 않아서 발생할 수 있습니다. @MockBean
을 사용할 때, 해당 빈(Bean)의 실제 로직은 실행되지 않고 모의 객체(Mock Object)로 대체되므로, 테스트 중에 해당 메서드의 기대하는 반환 값을 명시적으로 정의해주어야 합니다.
예를 들어, BoardControllerTest
에서 MockMvc
를 사용해 컨트롤러를 테스트하는 경우, @BeforeEach
를 사용하여 테스트가 실행되기 전에 BoardService
의 getList()
메서드가 호출될 때 원하는 객체 리스트를 반환하도록 설정할 수 있습니다.
Java 코드 예시:
@BeforeEach
void setUp() {
List<Board> mockList = Arrays.asList(new Board(...), new Board(...));
given(boardService.getList()).willReturn(mockList);
}
이렇게 설정하면 BoardController
의 getList()
메서드를 통해 /board/list
경로에 대한 요청이 들어왔을 때, mockList
에 정의된 리스트가 모델에 추가되어 뷰에 전달됩니다.
테스트 클래스에서 위와 같이 @MockBean
으로 정의된 빈의 동작을 명시적으로 설정해보시기 바랍니다. 이를 통해 모델이 예상대로 잘 전달되는지 확인하실 수 있을 것입니다.
추가적으로, 모델 값이 잘 전달되지 않는 것과 관련된 상세한 로그나 오류 메시지가 있다면, 해당 내용을 확인하여 더 정확한 원인을 파악할 수 있습니다.