当没有 Public 构造函数时,我如何对此进行单元测试?

How can I Unit Test This When There's No Public Constructor?

我自己编写了一个方便的小扩展方法来与目录服务一起使用 - 只需将 NT 域与 UserId 放在一起并在传递它们之前将它们连接起来:

public static IEnumerable<string> NtUserIds(this ResultPropertyCollection coll)
{        
    var domains = coll[ntDomain].Cast<string>();
    var ids = coll[ntUserID].Cast<string>();
    return domains.Zip(ids, (domain, id) => $"{domain}\{id}");
}

我想对其进行单元测试,但我很烦恼 - 我无法创建 ResultPropertyCollection,因为它没有 public 构造函数。

我正要去最小化它,但是索引器 returns 一个 ResultPropertyValueCollection - 没有 public 构造函数。

ResultPropertyCollection 确实有一个 internal parameterless ctor

通过反射,您可以创建这样的实例:

var ctor = typeof(ResultPropertyCollection).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic).First();
var instance = (ResultPropertyCollection)ctor.Invoke(null);