Как смоделировать конкретный класс с конструктором, имеющим другой класс в качестве параметра, используя Moq в c # - PullRequest
0 голосов
/ 04 мая 2018

У меня есть код, который проверяет корзину. Я пытаюсь смоделировать класс (да, не интерфейс, далее об этом ниже), который принимает другой класс в аргументе конструктора.

Конструктор класса теста:

    public class CheckoutServiceShould
        {
            List<Product> _allMockedProducts; 
            Mock<InMemoryProductService> _mockInMemoryProductService;
            Mock<DiscountService> _discountService;
            Mock<ShoppingBasket> _mockShoppingBasket;


     public List<Product> GetAllProducts()
         {
             return new List<Product>
                {
                new Product { Id = 1, Name = "Apple", Code = "A", Price = new 
    Price { Amount = 100 , Currency = "GBP"}},
                new Product { Id = 2, Name = "Banana", Code = "B", Price = new 
    Price { Amount = 150, Currency = "GBP" }},
                new Product { Id = 3, Name = "Grapes", Code = "C", Price = new 
    Price { Amount = 300, Currency = "GBP" }}
            };
        }

        public CheckoutServiceShould()
        {
            _mockShoppingBasket = new Mock<ShoppingBasket>();
            _mockInMemoryProductService = new Mock<InMemoryProductService> 
   (_mockShoppingBasket.Object);
            _discountService = new Mock<DiscountService>();
            _allMockedProducts = GetAllProducts();
        }

Я получаю это сообщение при попытке запустить тест (тест завершается ошибкой) Тест не пройден: Массаж: Сообщение: Castle.DynamicProxy.InvalidProxyConstructorArgumentsException: Невозможно создать экземпляр прокси класса: CheckoutSystem.Service.InMemoryProductService. Не удалось найти конструктор, который соответствовал бы заданным аргументам: Castle.Proxies.ShoppingBasketProxy

...