我正在尝试模拟单元测试的内部类,由于一些循环依赖,我将无法使用此类的接口来模拟它,我还添加了单元测试程序集名称(确保我使用属性中的正确程序集名称) )使用 InternalsVisibleTo 到该项目的 AssemblyInfo.cs ,还使用
<Compile Include="Properties\AssemblyInfo.cs" />
将 AssemblyInfo 添加到 csproj,这使得类对测试文件可见,但对于模拟不可见
NotSupportedException:要模拟的类型必须是接口、委托或非密封、非静态类。
我想创建此类的模拟,以便对此类中我没有测试的其他方法进行设置
为了能够用“Test Double”替换具体的依赖项,必须存在某种多态性。 必须有一些东西要重写或实现:abstract
或
virtual
成员,或接口。异常消息已经告诉您:
要模拟的类型必须是接口、委托或非密封、非静态类。
与所讨论的班级是
internal
还是
public
无关。
由于一些循环依赖,我将无法使用此类的接口来模拟它DIPPP不即使存在循环依赖,也没有什么可以阻止您使用接口。参见例如
具有循环依赖项并且仅针对公共 API 进行测试时,代码往往会更容易维护。