Я новичок в модульном тестировании, поэтому я уверен, что это очень простой вопрос, но я не смог найти решение, когда искал его.Moq unit test для фильтрации продуктов по их категориям
Я пытаюсь проверить, могу ли я фильтровать продукты по их категориям. Я могу получить доступ ко всем свойствам класса Product, но не к тем классам класса. Например, он не находит Category1.Name. Может ли кто-нибудь сказать мне, что я делаю неправильно?
Это мой класс продукта;
public partial class Product
{
public int ProductID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public int CategoryID { get; set; }
public virtual Category Category1 { get; set; }
}
Это мой тест;
[TestMethod]
public void Can_Filter_Products()
{
//Arrange
Mock<IProductRepository> mock = new Mock<IProductRepository>();
mock.Setup(m => m.Products).Returns(new Product[]
{
new Product {ProductID=1,Name="P1", **Category1.Name** = "test1" },
new Product {ProductID=2,Name="P2", **Category1.Name** = "test2"},
new Product {ProductID=3,Name="P3", **Category1.Name** = "test1"},
new Product {ProductID=4,Name="P4", **Category1.Name** = "test2"},
new Product {ProductID=5,Name="P5", **Category1.Name** = "test3"},
}.AsQueryable());
//Arrange create a controller and make the page size 3 items
ProductController controller = new ProductController(mock.Object);
controller.PageSize = 3;
//Action
Product[] result = ((ProductsListViewModel)controller.List("test2", 1).Model).Products.ToArray();
//Assert - check that the results are the right objects and in the right order.
Assert.AreEqual(result.Length, 2);
Assert.IsTrue(result[0].Name == "P2" && result[0].Category1.Name == "test2");
Assert.IsTrue(result[1].Name == "P4" && result[1].Category1.Name == "test2");
}
Что такое '** Category1.Name **' должен делать? –
Это просто свойство name из моего класса. У меня есть панель навигации, и когда выбрана категория, она передает это значение моему контроллеру и фильтрует продукты на основе имени соответствующей категории. – MountainBiker