模拟没有接口的内部类

问题描述 投票:0回答:1

我正在尝试模拟单元测试的内部类,由于一些循环依赖,我将无法使用此类的接口来模拟它,我还添加了单元测试程序集名称(确保我使用属性中的正确程序集名称) )使用 InternalsVisibleTo 到该项目的 AssemblyInfo.cs ,还使用

<Compile Include="Properties\AssemblyInfo.cs" />
将 AssemblyInfo 添加到 csproj,这使得类对测试文件可见,但对于模拟不可见

NotSupportedException:要模拟的类型必须是接口、委托或非密封、非静态类。

我想创建此类的模拟,以便对此类中我没有测试的其他方法进行设置

c# unit-testing moq xunit internal-class
1个回答
0
投票

为了能够用“Test Double”替换具体的依赖项,必须存在某种多态性。 必须有一些东西要重写或实现abstract

virtual
成员,或接口。
异常消息已经告诉您:

要模拟的类型必须是接口、委托或非密封、非静态类。

与所讨论的班级是
internal

还是

public
无关。

由于一些循环依赖,我将无法使用此类的接口来模拟它

即使存在循环依赖,也没有什么可以阻止您使用接口。参见例如
DIPPP

了解处理依赖循环的方法。 总而言之,当代码

具有循环依赖项并且仅针对公共 API 进行测试时,代码往往会更容易维护。

© www.soinside.com 2019 - 2024. All rights reserved.