더북(TheBook)
        await conn.OpenAsync().ConfigureAwait( false);
        await cmd.ExecuteNonQueryAsync().ConfigureAwait( false);
    }

    private const string createReservationSql = @"
       INSERT INTO
           [dbo].[Reservations] ([At], [Name], [Email], [Quantity])
       VALUES (@At, @Name, @Email, @Quantity)";
}

“마크, 하지만 그 클래스는 테스트 주도로 만들지 않았잖아요.”라고 항의할 수 있겠죠.

사실 SqlReservationsRepository는 험블 객체(Humble Object)31[66]라고 생각하기 때문에 따로 테스트 주도로 만들지는 않았습니다. 이 구현은 쉽게 자동화할 수 없는 하위 시스템에 의존하기 때문에 유닛 테스트를 진행하기 어렵습니다. 대신 논리 분기나 결함을 일으키기 쉬운 객체들을 사용하지 않았습니다

SqlReservationsRepository의 유일한 분기는 정적 코드 분석에 의해 비주얼 스튜디오에서 만들어낸 객체가 null인지 확인하는 부분입니다.

데이터베이스와 관련된 자동화된 테스트를 추가하는 방법은 12.2절에서 살펴보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.