我有一些我想要模拟的类,并且只有一个内部期望一些参数。因此,我将InternalsVisibleTo
- 属性添加到我正在测试的系统中,并编写了以下代码:
var target = Substitute.For<MyClass>(testArgs);
MyClass
就是这样:
public class MyClass
{
internal MyClass(int i) { ... }
}
调试时我得到NotSupporetedException
,因为我没有默认构造函数。但是因为我有一个内部的(由于InternalsVisibleTo
我的测试程序集可见)我希望使用一个。
当然我可以将构造函数公开,但这会允许我的API的任何用户创建MyClass
的实例,我希望避免这种情况。有没有什么我错过了让这个工作?
答案 0 :(得分:0)
我们不必将类的构造函数暴露给API,我们所要做的就是让构造函数internal protected
使它对从MyClass
或<派生的类可见/ em> MyClass
所在程序集中的类。因此,NSubstitute能够创建一个派生自MyClass
的类,并将构造函数调用重定向到基础构造函数。