【问题标题】:unit testing a function that takes IEnumerable<IClient> clients parameter对采用 IEnumerable<IClient> 客户端参数的函数进行单元测试
【发布时间】:2016-03-16 13:40:51
【问题描述】:

我有一个功能可以一次保存多个客户端一个客户端。我正在努力使用字符串类型客户端属性创建和填充参数 IEnumerable 之一:clientKey、clientName 和 clientTypeCode

public void SaveMultipleClients(IEnumerable<IClient> clients, TransactionMetadata metadata)
    {
        try
        {
            if (clients == null)
            {
                throw new ArgumentNullException("clients");
            }

            var abstractClients = clients.ToList();
            var concreteClients = new List<Client>();
            for (int i = 0; i < abstractClients.Count; i++)
            {
                concreteClients.Add(abstractClients[i].ToConcreteType<IClient, Client>());
    var cleanClients = this.RemoveErroneousClient(concreteClients[i]);
                foreach (var client in cleanClients)
                {
                    this.SaveClient(client, metadata);
                }
            }

            this.SavePending(concreteClients, metadata);
        }
        catch (Exception e)
        {
            throw e.WrapException();
        }
    }

提前感谢您的帮助!

【问题讨论】:

  • 您遇到什么错误?在哪里?
  • 您在某处创建了 IClient 接口的具体实现?还是你在嘲笑这个界面?将它们添加到 List
  • 如果您的问题是“如何在单元测试中构建客户端集合”,您可以构建测试 ICient 实现或使用模拟框架(例如 MS fakes)在您的内部构建一个测试
  • vc 74 是的,我想在我的单元测试中构建一个客户端集合。你能显示代码示例吗?

标签: c# unit-testing integration-testing


【解决方案1】:

我能够实例化和填充客户端列表并将其传递给客户端参数。

var myClientsList = new List<IClient>();
        myClientsList.Add(individualClient);
        myClientsList.Add(individualClient1);

        var clients = clientDataManager.SaveMultipleClientsOneAtATime(myClientsList, new TransactionMetadata(DateTime.UtcNow));

【讨论】:

  • 你不喜欢这种方法?
猜你喜欢
  • 2021-02-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 2019-05-16
相关资源
最近更新 更多