Эту функцию можно вызвать только из ошибки LINQ to Entities во время модульного тестирования. - PullRequest
0 голосов
/ 18 июня 2020

Привет, у меня проблема с тестированием моего метода. Я высмеиваю свой репозиторий как DbSet. Мой метод модульного тестирования выглядит так:

public void Can_change_quantity_of_product()
    {
        //przygotowanie
        var repo = CreateDbSetMock(new List<Processor>
        {
            new Processor{Product_ID = 1, Quantity = 20},
            new Processor{Product_ID = 2, Quantity = 5}
        });
        var target = new ProductContext();
        target.context.Processors = repo.Object;
        //działanie
        target.SellProduct(new OrderDetails { Product_ID = 1, Quantity = 5 });
        //Asercje
        Assert.AreEqual(target.TakeProcessors.ToList()[0].Quantity, 15);
    }

И я получаю вот эту ошибку:

public IEnumerable<Product> TakeProcessors  //Zwraca repozutorium procesorów jako lista klas Product.
    {
        get
        {
            return (from x in context.Processors
                    select new Product
                    {
                        ProductID = x.Product_ID,
                        Title = x.Title,
                        Price = x.Price,
                        Quantity = x.Quantity,
                        FDetail = SqlFunctions.StringConvert(x.Clock, 5, 1),
                        SDetail = SqlFunctions.StringConvert((double)x.Cores),
                        TDetail = SqlFunctions.StringConvert((decimal)x.Cache),
                        OrderDetails = x.OrderDetails,
                        Promoted = x.Promoted,
                        SoldPieces = x.OrderDetails.Count() == 0 ? 0 : x.OrderDetails.Sum(y => y.Quantity),
                        Category = "Procesory"
                    }).ToList();
        }
    }

Что я делаю не так?

...