더북(TheBook)

ReservationsController는 생성자 주입(constructor injection)[25]을 사용해서 주입된 repository를 수신하고, 나중에 사용할 수 있도록 읽기 전용 프로퍼티로 저장합니다. 클래스가 적절하게 초기화되면 Post 메서드에서 이 정보를 사용할 수 있다는 의미입니다. 하드코딩된 예약을 생성하면 일단 테스트는 통과할 수 있습니다. 하지만 이 방식은 명백하게 잘못된 방식이죠. 테스트를 동작시킬 수 있는 가장 간단한28 방법일 뿐입니다[22].

예제 4-15 주입된 저장소에 예약 정보를 저장합니다.
(Restaurant/bc1079a/Restaurant.RestApi/ReservationsController.cs)

[ApiController, Route("[controller]")]
public class ReservationsController
{
    public ReservationsController(IReservationsRepository repository)
    {
        Repository = repository;
    }

    public IReservationsRepository Repository {  get; }

    public async Task Post(ReservationDto dto)
    {
        if (dto  is null)
            throw new ArgumentNullException(nameof(dto));
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.