
26
1장 타입스크립트 알아보기
runQuery
메서드가 있기 때문에 실제 환경에서도
getAuthors
에
PostgresDB
를
사용할 수 있습니다. 구조적 타이핑 덕분에,
PostgresDB
가
DB
인터페이스를 구
현하는지 명확히 선언할 필요가 없습니다. 타입스크립트는 그렇게 동작할 것
이라는 것을 알아챕니다.
테스트를 작성할 때, 더 간단한 객체를 매개변수로 사용할 수도 있습니다.
test('getAuthors', ()
=
> {
const authors
=
getAuthors({
runQuery(sql: string) {
return [['Toni', 'Morrison'], ['Maya', 'Angelou']];
}
});
expect(authors).toEqual([
{first: 'Toni', last: 'Morrison'},
{first: 'Maya', last: 'Angelou'}
]);
});
타입스크립트는 테스트 DB가 해당 인터페이스를 충족하는지 확인합니다. 그
리고 테스트 코드에는 실제 환경의 데이터베이스에 대한 정보가 불필요합니
다. 심지어 모킹 라이브러리도 필요 없습니다. 추상화(
DB
)를 함으로써, 로직과
테스트를 특정한 구현(
PostgresDB
)으로부터 분리한 것입니다.
테스트 이외에 구조적 타이핑의 또 다른 장점은 라이브러리 ...