우리의 목표는 애플리케이션과의 상호작용을 추상화하여 상태를 질의하고 변경할 수 있는 인터페이스를 만드는 것이다. 이 접근 방식의 장점은 무엇인지, 왜 지금까지 해왔던 것처럼 애플리케이션을 직접 사용할 수 없는지 이유가 궁금할 것이다. 이 파사드의 가장 큰 장점은 애플리케이션이 제공하는 모든 사용자 작업을 설명하는 계약으로 작동한다는 것이다. 따라서 테스트에서 ‘꼼수’를 사용해 직접적으로 비공개 메서드를 직접 호출할 수 없다. 다른 장점에 대해서는 나중에 살펴보겠다(3장 프로토콜 참고).
ApplicationForAT라는 클래스를 만들고, 그 안으로 getToDoList 메서드와 인수 테스트의 파싱 메서드를 옮긴다.
class ApplicationForAT {
fun getToDoList(user: String, listName: String): ToDoList {
// 테스트에서 옮겨짐
}
// 테스트에서 옮겨진 다른 비공개 메서드들
}
지금은 이 클래스를 인수 테스트와 같은 파일 안에 보관하지만 추상화가 완료되면 별도의 파일로 옮길 것이다.