Fakes#
Fakes는 Test Double 기법 중 하나로, 실제 객체의 간단한 구현을 제공하는 테스트용 객체.
- 실제 구현체를 단순화하여 테스트 환경에서 사용한다.
- 외부 의존성을 제거하고 테스트 속도를 향상시킨다.
- 실제 객체와 유사한 동작을 제공하여 현실적인 테스트 환경을 구성한다.
- 테스트 실행 속도가 빠르다.
- 실제 구현체보다 구성이 간단하다.
- 테스트 간 재사용이 용이하다.
- 실제 객체와 유사한 동작으로 신뢰성 있는 테스트가 가능하다.
- 실제 구현체와 동작이 완전히 일치하지 않을 수 있다.
- Fake 객체 구현에 추가적인 시간과 노력이 필요하다.
- Fake 객체 자체의 유지보수가 필요할 수 있다.
Python#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| class RealDatabase:
def connect(self):
# 실제 데이터베이스 연결 로직
pass
def fetch_data(self):
# 실제 데이터 조회 로직
return "Real data"
class FakeDatabase:
def connect(self):
# 연결 시뮬레이션
pass
def fetch_data(self):
# 가짜 데이터 반환
return "Fake data"
class DataService:
def __init__(self, database):
self.database = database
def get_data(self):
self.database.connect()
return self.database.fetch_data()
# 테스트
fake_db = FakeDatabase()
data_service = DataService(fake_db)
result = data_service.get_data()
assert result == "Fake data"
|
JavaScript#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| class RealDatabase {
connect() {
// 실제 데이터베이스 연결 로직
}
fetchData() {
// 실제 데이터 조회 로직
return "Real data";
}
}
class FakeDatabase {
connect() {
// 연결 시뮬레이션
}
fetchData() {
// 가짜 데이터 반환
return "Fake data";
}
}
class DataService {
constructor(database) {
this.database = database;
}
getData() {
this.database.connect();
return this.database.fetchData();
}
}
// 테스트
const fakeDb = new FakeDatabase();
const dataService = new DataService(fakeDb);
const result = dataService.getData();
console.assert(result === "Fake data");
|
참고 및 출처#