Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Moq.SetupGet抛出NotSupportedException_C#_Unit Testing_Moq - Fatal编程技术网

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