C# 为什么Moq.SetupGet抛出NotSupportedException
C# 为什么Moq.SetupGet抛出NotSupportedException,c#,unit-testing,moq,C#,Unit Testing,Moq,Moq.SetupGet引发异常 为什么? 如果我没有办法,如何正确执行,如何更改测试的类(我不能添加接口或使属性虚拟或诸如此类的东西) 阶级 试验 [TestMethod] 公共无效PutCaseByIdCaseContactsExperimental() { var toDelete=new Mock(); SetupGet(x=>x.todeletProperty).Returns(5);//您正在尝试模拟非虚拟类型 基本上,Moq会创建一个代理,该代理实现、继承应该模拟的类型,并使用自己
Moq.SetupGet
引发异常
为什么?
如果我没有办法,如何正确执行,如何更改测试的类(我不能添加接口或使属性虚拟或诸如此类的东西)
阶级
试验
[TestMethod]
公共无效PutCaseByIdCaseContactsExperimental()
{
var toDelete=new Mock();
SetupGet(x=>x.todeletProperty).Returns(5);//您正在尝试模拟非虚拟类型
基本上,Moq会创建一个代理,该代理实现、继承应该模拟的类型,并使用自己的代理重写属性和方法
通常,Moq都将为抽象
类型(如基类和接口)提供测试实现,这些类型不能或不应该在测试中使用(为了设计或简单性)
当您像这样声明属性时,您可以使场景正常工作:
public virtual int ToDeleteProperty
尽管我不建议这样更改您的类。您试图模拟非虚拟类型
基本上,Moq会创建一个代理,该代理实现、继承应该模拟的类型,并使用自己的代理重写属性和方法
通常,Moq都将为抽象
类型(如基类和接口)提供测试实现,这些类型不能或不应该在测试中使用(为了设计或简单性)
当您像这样声明属性时,您可以使场景正常工作:
public virtual int ToDeleteProperty
尽管我不建议这样更改您的类。您不必模拟来删除属性
。尝试构造一个具体的对象,并像在非测试代码中那样将值设置为5
。为什么要在此处使用模拟?只需为测试目的构造对象的实例?或者使用SetupAllP的存根属性…您不必模拟来删除属性
。尝试构造一个具体的对象,并像在非测试代码中那样将值设置为5
。为什么要在此处使用模拟?只需为测试目的构造对象的实例?或者使用SetupAllProperties的存根。。。
public virtual int ToDeleteProperty