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