内部构造函数

时间:2017-05-16 14:24:44

标签: c# unit-testing mocking internal nsubstitute

我有一些我想要模拟的类,并且只有一个内部期望一些参数。因此,我将InternalsVisibleTo - 属性添加到我正在测试的系统中,并编写了以下代码:

var target = Substitute.For<MyClass>(testArgs);

MyClass就是这样:

public class MyClass
{
    internal MyClass(int i) { ... }
}

调试时我得到NotSupporetedException,因为我没有默认构造函数。但是因为我有一个内部的(由于InternalsVisibleTo我的测试程序集可见)我希望使用一个。

当然我可以将构造函数公开,但这会允许我的API的任何用户创建MyClass的实例,我希望避免这种情况。有没有什么我错过了让这个工作?

1 个答案:

答案 0 :(得分:0)

我们不必将类的构造函数暴露给API,我们所要做的就是让构造函数internal protected使它对从MyClass 或<派生的类可见/ em> MyClass所在程序集中的类。因此,NSubstitute能够创建一个派生自MyClass的类,并将构造函数调用重定向到基础构造函数。