2013-10-23 110 views
0

我有一个这(工作)代码我需要重构,所以我可以单元测试(与moq)如果包被添加到IList和如果对于每个包LoadContexts和LoadModules是跑。UnitTest添加项目到列表中foreach

private Package[] _getPackages() 
    { 
     string[] files = _directory.GetFiles(_moduleDirectory, "*.dll", SearchOption.AllDirectories); 

     foreach (string file in files) 
     { 
      string relativePath = file.Substring(_baseDirectory.Count()); 
      Package package = new Package(relativePath); 
      package.LoadContexts(); 
      package.LoadModules(); 
      if (package.Contexts.Count() > 0 && package.Modules.Count() > 0) 
      { 
       _packages.Add(package); 
      } 
     } 

     return _packages.ToArray(); 
    } 

我想制作一个单独的PackageList类与IPackageList接口,让这个类手柄添加和装载包。这样我可以验证是否使用了这些方法,并为PackageList类进行单独的测试。

这是一个很好的方法,还是有更好的模式来测试?

回答

1

我喜欢你提出的架构:它将加载和管理软件包列表的问题从软件包本身以及软件包的使用者中分离出来。您将能够轻松测试独立加载新软件包。

我会做一个调整:不要将它称为PackageList,因为该名称不能证明将数据结构封装在新类中。将其命名为唤起合乎逻辑的目的。也许PackageManager或PackageLoader,因为它似乎是负责这些类型的职责。

+0

+1用于纠正我的类名:-) –