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

私はあなたの提案したアーキテクチャが気に入っています。パッケージのリストを読み込んで管理するという懸念を、パッケージ自体とパッケージの消費者から分離しています。新しいパッケージのロードを個別に簡単にテストできます。

1 つの微調整: PackageList とだけ呼ばないでください。その名前では、データ構造を新しいクラスにラップすることが正当化されないからです。論理的な目的を思い起こさせるような名前を付けてください。おそらく、PackageManager または PackageLoader が、これらの種類の職務を担当しているようです。

于 2013-10-23T20:31:56.803 に答える