2013-10-23 116 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用於糾正我的類名:-) –