0

我有一个需要重构的这个(工作)代码,以便我可以对包添加到 IList 以及是否运行每个包的 LoadContexts 和 LoadModules 进行单元测试(使用 moq)。

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 类进行单独的测试。

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

4

1 回答 1

1

我喜欢你提出的架构:它将加载和管理包列表的问题与包本身以及包的消费者分开。您将能够轻松地独立测试加载新包。

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

于 2013-10-23T20:31:56.803 回答