Moq проверяет содержимое параметра List, который передается методу - PullRequest
1 голос
/ 10 апреля 2020

Я использую Moq и хочу проверить содержимое параметра List, который передается методу.

Теперь, как я могу проверить, является ли вызываемый метод записи,

public class DBStore
{
    public virtual void Write(string retailName, List<CustomerInfo> list, List<Order> orderList)
    {

    }
}

Имя Клиента "а" и количество?

public class CustomerInfo
{
    public string Name;
    public int CustomerInfoId;
}

Я могу проверить строку, но не содержимое заданного списка или счетчика.

[TestClass]
public class UnitTests
{
    [TestMethod]
    public void TestCustomer()
    {
        var dbStore = new Mock<DBStore>();

        dbStore.Setup(x => x.Write(
            It.IsAny<string>(),
            It.IsNotNull<List<CustomerInfo>>(),
            It.IsNotNull<List<Order>>()));

        var updateInfo = new UpdateInfo(dbStore.Object);

        updateInfo.UpdateCustomer();

        dbStore.Verify(
            o => o.Write(
                "Walmart",
                It.IsNotNull<List<CustomerInfo>>(),
                It.IsNotNull<List<Order>>()));
    }
}

Могу ли я использовать IsAny <> в методе Verify? Если да, то как?

Поддержка классов:



    public class Order
    {
        public int CustomerInfoId;
        public string Details;
        public int OrderId;
    }


    public class UpdateInfo
    {
        public DBStore DB { get;set; }

        public UpdateInfo(DBStore dbStore)
        {
            this.DB = dbStore;
        }

        public void UpdateCustomer()
        {

            // Logic to get some more info and get retail name
            string retailName = "walmart";
            List<CustomerInfo> customerList = new List<CustomerInfo>();
            customerList.Add(new CustomerInfo { Name = "a", CustomerInfoId = 1 });
            customerList.Add(new CustomerInfo { Name = "b", CustomerInfoId = 2 });

            List<Order> orderList = new List<Order>();
            orderList.Add(new Order { OrderId = 1, CustomerInfoId = 1 });
            orderList.Add(new Order { OrderId = 2, CustomerInfoId = 1 });

            this.DB.Write(retailName, customerList, orderList);
        }
    }


...