테스트를 진행하기 어려운 경우 이를 대신해 테스트를 진행할 수 있도록 만들어주는 객체
ex)) 외부와 통신해서 값을 가져와야 하는 경우 Mocking 처리 등
번외(영화 촬영시 위험한 역할을 하는 스턴트 더블에서 비롯됨)
테스트 더블은 크게 Dummy, Fake, Stub, Spy, Mock으로 나뉜다.
가장 기본적인 테스트 더블 객체이고 **인스턴스화 된 객체만 필요할 경우 사용
**한다.
그렇기 때문에 해당 객체의 정상적인 동작은 보장하지 못한다.
복잡한 로직이나 객체 내부에서 필요로 하는 다른 **외부 객체들의 동작을 단순화하여 구현
**한 객체이다.
구현을 갖고는 있지만 실제 Production 환경에서는 적합하지 않다. (단순 구현이기 때문에 정교한 동작 X)
아래처럼 DB와 비슷하게 동작을 하도록 만들 수 있다.
public class FakeUserRepository implements UserRepository {
private Collection<User> users = new ArrayList<>();
@Override
public void save(User user) {
if (findById(user.getId()) == null) {
user.add(user);
}
}
@Override
public User findById(long id) {
for (User user : users) {
if (user.getId() == id) {
return user;
}
}
return null;
}
}
테스트를 위해 **의도한 결과만 반환
**하기 위한 객체이다. ex)) mockito를 사용한 stubbing