当没有 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);
我自己编写了一个方便的小扩展方法来与目录服务一起使用 - 只需将 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);