【问题标题】:mock class with internal constructor具有内部构造函数的模拟类
【发布时间】:2017-05-16 14:24:44
【问题描述】:

我有一些我想模拟的类,它只有一个内部期望一些参数。为此,我将InternalsVisibleTo-attribute 添加到我的测试系统并编写了以下代码:

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

MyClass 在哪里:

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

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

当然,我可以将构造函数公开,但这将允许我的 API 的任何用户创建我想避免的 MyClass 实例。为了让它发挥作用,我有什么遗漏吗?

【问题讨论】:

    标签: c# unit-testing mocking internal nsubstitute


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-17
      • 2016-01-28
      • 2017-09-30
      • 1970-01-01
      • 2022-01-27
      相关资源
      最近更新 更多