

위 스크린샷에서 볼 수 있는 오류는 Mockito의 argument matcher를 잘못 사용했을 때 발생하는 것이다.
Mockito에서는 any(), eq(), isNull()과 같은 argument matcher들을 제공하는데, 이러한 matcher를 사용할 때 주의해야 할 점이 있다.
바로!! 한 메서드 호출에서 argument matcher를 사용하기 시작하면 그 메서드의 모든 인자에 대해 matcher를 사용해야한다는 것이다. 그렇지 않으면 위의 오류가 발생하게 된다.
someMethod(someValue, "raw String");
여기서 첫 번째 인자에 대해 any() matcher를 사용하려고 한다면 두 번째 인자에 대해서도 matcher를 사용해야 한다.
someMethod(any(), eq("raw String"));
해결
when(boardService.createBoard(any(BoardCreateRequestDto.class))).thenReturn(BoardCreateResponseDto.builder()
.boardName("boardName")
.boardColor("boardColor")
.boardInfo("boardInfo")
.build());
any()
any()는 어떤 종류의 값이던지 받아들이는 matcher이다.someMethod(any())는 someMethod가 어떤 인자로 호출되더라도 통과되는 조건을 나타낸다.eq()
eq()는 특정 값을 기대하는 matcher이다. someMethod(eq("specificValue"))는 someMethod가 "specificValue"라는 문자열 인자와 함께 호출될 때만 통과되는 조건을 나타낸다.isNull()
isNull()은 null 값을 기대하는 matcher이다.someMethod(isNull())는 someMethod가 null 인자와 함께 호출될 때만 통과되는 조건을 나타낸다.