What
- 단위 테스트에서 실제 객체를 생성하는 방법이다.
- Mock과 달리 직접 행동을 지정해줄 필요가 없다.
Why
- stub이 필요한 부분에만 적용할 수 있기 때문에 사용한다.
- 현재 이해하기로선, 실제 코드에 영향 범위가 가장 큰 서비스 코드에서는 핵심만 테스트 해야하는데 변환하는 객체의 역할(Mapper)은 검증 할 필요가 없기 때문이라고 생각한다.
How
@SpringBootTest public class UserServiceTest { @Mock private UserRepository userRepository; @Spy // spy private UserMapper userMapper = new UserMapperImpl(); @Autowired private UserService userService;
이제 ServiceTest에 mapper에 대한 응답값을 만들어줄 수고가 덜 할 수 있게된다.