我有一个这个(工作)代码我需要重构所以我可以单独测试(使用moq)是否将包添加到IList以及是否运行每个包LoadContexts和LoadModules。
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();
}
我正在考虑使用IPackageList接口创建一个单独的PackageList类,并让此类处理添加和加载包。这样我就可以验证是否使用了这些方法,并对PackageList类进行单独的测试。
这是一个好方法还是有更好的模式来测试它?
答案 0 :(得分:1)
我喜欢你提出的体系结构:它分离了从包本身以及包的使用者加载和管理包列表的顾虑。您将能够轻松地独立测试加载新软件包。
我要做的一个调整:不要只将它称为PackageList,因为该名称不能证明在新类中包装数据结构。将其命名为唤起逻辑目的的东西。也许PackageManager或PackageLoader,因为它似乎负责这些类型的职责。