如何使用动态返回值对方法进行单元测试?

时间:2015-10-28 00:55:10

标签: c# testing dynamic return

我有这样的方法:

public List<string> GetAllDomains()
{
       List<string> domains = new List<string>();

      DirectoryContext directoryContext = new DirectoryContext(DirectoryContextType.Domain);

      using (Domain currentDomain = Domain.GetDomain(directoryContext))
      using (Forest forest = currentDomain.Forest)
      {
          DomainCollection addDomainsInForest = forest.Domains;
          foreach (Domain domain in addDomainsInForest)
          {
              domains.Add(domain.Name);
          }
      }

      return domains; 

}

如何为此方法编写单元测试?感谢。

1 个答案:

答案 0 :(得分:1)

由于您的方法与Active Directory对话,因此您无法为其创建单元测试。您可以创建集成测试。集成测试是测试代码如何与环境(或其他代码)集成的测试。在您的情况下,您希望测试代码如何与Active Directory集成。

在这种情况下,集成测试只能在您知道它将包含的域的名称的特定环境中工作。

话虽如此,如果您的代码包含大量逻辑,您可以通过隐藏某些接口/接口后面的活动目录代码来创建抽象,然后您可以通过模拟这些接口来单元测试该逻辑。

但是,在你的情况下,我看不出你的方法包含很多逻辑。它简单地消耗了Active Directory API。

相关问题