この質問で概説されているのとほぼ同じ、いくつかの Active Directory コードの単体テストを試みています。
テストで使用する DirectoryEntry のインスタンスを作成します
DirectoryEntry
受け入れられた答えは、私が持っているクラスのラッパー/アダプターを実装することを提案しています:
public interface IDirectoryEntry : IDisposable
{
PropertyCollection Properties { get; }
}
public class DirectoryEntryWrapper : DirectoryEntry, IDirectoryEntry
{
}
問題は、モックの「 Properties」プロパティが初期化されていないことです。IDirectoryEntry
このようにモックアップを設定しようとしています:
this._directoryEntryMock = new Mock<IDirectoryEntry>();
this._directoryEntryMock.Setup(m => m.Properties)
.Returns(new PropertyCollection());
次のエラーが発生します。
タイプ 'System.DirectoryServices.PropertyCollection' にはコンストラクターが定義されていません
私が理解しているように、内部コンストラクターのみでクラスをインスタンス化しようとすると、このエラーがスローされます。
クラスのラッパー/アダプターを作成しようとしましたPropertyCollection
が、パブリックコンストラクターがないと、クラスをインスタンス化または継承する方法がわかりません。
では、テスト目的でクラスの「 Properties」プロパティをモック/セットアップするにはどうすればよいですか?DirectoryEntry