1. Mocking의 기본 개념 정리
테스트 환경에서 Mocking은 실제 객체 대신 테스트에 필요한 특정 동작이나 응답을 제공하는 가짜 객체(테스트 더블)를 만들어 사용하는 기법이다. 이를 통해 테스트의 독립성을 유지하고, 외부 의존성이나 복잡한 환경 설정 없이 단위 테스트를 효율적으로 수행할 수 있다.
주요 용어 설명
Mock
- 정의: 테스트 대상 코드와 상호작용할 때, 특정 메서드 호출에 대해 미리 정의한 동작이나 값을 반환하도록 설정한 가짜 객체이다.
- 특징: 호출 여부, 호출 횟수, 인자 등을 검증할 수 있다.
Stub
- 정의: 테스트 시 특정 메서드에 대해 고정된 응답을 제공하는 간단한 객체이다.
- 특징: 주로 반환값만 제공하며, 호출 검증은 수행하지 않는 경우가 많다.
Spy
- 정의: 실제 객체를 감싸서 일부 메서드는 원래 기능을 수행하고, 나머지는 모의 동작을 하도록 할 수 있는 객체이다.
- 특징: 실제 객체의 행동을 보존하면서 호출된 메서드나 인자를 기록하여 검증할 수 있다.
Fake
- 정의: 실제 구현체와 유사하지만, 테스트 환경에서만 사용하기 위해 단순화한 구현체이다.
- 특징: 예를 들어, 인메모리 데이터베이스 등이 Fake의 한 예로 볼 수 있다.
테스트 더블(Test Double)의 역할