더북(TheBook)

4.3.8 의존성 구성

새로운 테스트는 성공하지만, 예제 4-7의 경계 테스트는 실패합니다. ReservationsController가 더 이상 매개변수가 없는 생성자가 아니기 때문입니다. 프로덕션 코드에 필요한 IReservationsRepository 인터페이스를 구현하는 클래스가 없기 때문에 ASP.NET 프레임워크에서 클래스의 인스턴스를 만들 때 추가해야 하는 부분들이 있습니다.

모든 테스트를 통과하는 가장 간단한 방법은 인터페이스에 널 객체(null object)[118] 구현을 추가하는 것입니다. 예제 4-16은 Startup 클래스 안에 임시로 중첩된 클래스인, 아무것도 하지 않는 IReservationsRepository를 구현한 것입니다.

예제 4-16 널 객체 구현. 이 부분은 임시로 중첩된 private 클래스 형태로 만들었습니다.
(Restaurant/bc1079a/Restaurant.RestApi/Startup.cs)

private class NullRepository : IReservationsRepository
{
    public Task Create(Reservation reservation)
    {
        return Task.CompletedTask;
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.