액션을 만들어야 하기 때문에 아직 컴파일되지 않는다. 이 문제는 쉽게 해결할 수 있다.
액션과 프로토콜
이제 Pesticide 형식으로 액션을 정의해야 한다. 앞서 살펴본 것처럼 액션은 애플리케이션과 액터 사이에서 번역기처럼 작동한다.
인수 테스트에서 코드를 포팅하는 데는 변경이 거의 필요 없다.
interface ZettaiActions : DdtActions<DdtProtocol> { ➊
fun getToDoList(user: User, listName: ListName): ToDoList?
}
class DomainOnlyActions() : ZettaiActions { ➋
override val protocol: DdtProtocol = DomainOnly ➌
override fun prepare() = Ready ➍
private val lists: Map<User, List<ToDoList>> = emptyMap() ➎
private val hub = ToDoListHub(list)