??????????д??????????????????????????????д??????????????????Щ???????????д???????????????????????????????????и?????????????????????????????????С?????????????????bug?????Σ?????????????????Сbug?????????????????????????????????????????е???????д????????

?????????????????????????л????????????????????????????????????????????????????????????????ò???????????(TDD)????????“???”???????????????????????????????????????????Щ????????????????????????о??????????????????????????????????????????????????????????Щ?????????????????????????????????????????????????????????“????????????????????”????“??????????д?????????????”??

????????????????????????????

????д???????????????κ????????????粻д??

???????????????飬????????????????

?????????????????????????Ч?????????????б????

?????????????????????????????????Щ????????/?????????????????????????е???????????????????????????

????1????????????

?????????????????????????????????????????????????н??в????????ζ????????????????????????????????????????α????????ж?·???ò????????????????????

???????????????????????????е?GetByID??????

    public class ProductService : IProductService 
    { 
        private readonly IProductRepository _productRepository; 
        
        public ProductService(IProductRepository productRepository) 
        { 
            this._productRepository = productRepository; 
        } 
        
        public Product GetByID(string id) 
        { 
            Product product =  _productRepository.GetByID(id); 
        
            if (product == null) 
            { 
                throw new ProductNotFoundException(); 
            } 
        
            return product; 
        } 
    }

????????ò?????????У????????д???IProductRepository???????????????ProductService.GetByID?????????????????С???????IProductRepository?????????????????????

    [TestMethod] 
    public void GetProductWithValidIDReturnsProduct() 
    { 
        // Arrange
        IProductRepository productRepository = new StubProductRepository(); 
        ProductService productService = new ProductService(productRepository); 
        
        // Act
        Product product = productService.GetByID("spr-product"); 
        
        // Assert
        Assert.IsNotNull(product); 
    } 
        
    public class StubProductRepository : IProductRepository 
    { 
        public Product GetByID(string id) 
        { 
            return new Product() 
            { 
                ID = "spr-product"?? 
                Name = "Nice Product"
            }; 
        } 
        
        public IEnumerable<Product> GetProducts() 
        { 
            throw new NotImplementedException(); 
        } 
    }