데이터베이스나 다른 의존성을 스텁으로 대체하기
이후 장에서 스텁을 더 자세히 다루지만, 스텁은 간단히 말해 실제 의존성을 흉내 내는 가짜 의존성이다. 즉, 테스트에서 필요한 값을 내가 원하는 방식으로 만들어 낼 수 있는데, 스텁을 사용하면 실제 의존성에 접근하지 않고도 테스트를 수행할 수 있어 테스트가 더 예측 가능하고 안정적으로 진행된다.
다만 인메모리 데이터베이스(In-memory Database)를 사용할 때는 주의할 점이 있다. 인메모리 데이터베이스는 테스트 간에 데이터베이스 인스턴스를 공유하지 않는 한은 테스트를 서로 분리시켜 단위 테스트 독립성을 보장한다. 하지만 이러한 데이터베이스는 위치가 어중간하다. 실제 데이터베이스만큼 신뢰성과 정확성을 보장하지 않는 데다, 스텁만큼 설정이 간단하지 않다는 것도 문제다. 기능적으로 인메모리 데이터베이스는 실제 운영 데이터베이스와 크게 다를 수 있어 인메모리 데이터베이스에서 통과한 테스트가 실제 데이터베이스에서는 실패할 수 있다. 그 반대도 마찬가지다. 따라서 코드가 제대로 작동하는지 확인하기 위해 같은 테스트를 실제 데이터베이스에서 수동으로 다시 실행해야 할 때가 많다. 표준화된 SQL 기능만 최소한으로 사용하지 않는다면 단위 테스트에는 스텁을 사용하고, 통합 테스트에는 실제 데이터베이스를 사용하는 것이 좋다.