Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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# Set方法不通过Moq设置抽象对象的属性_C#_Moq - Fatal编程技术网

C# Set方法不通过Moq设置抽象对象的属性

C# Set方法不通过Moq设置抽象对象的属性,c#,moq,C#,Moq,我有一个SetRange方法,它设置StartDate和EndDate属性: public virtual void SetRange(DateTime? startDate, DateTime? endDate) { this.StartDate = startDate; this.EndDate = endDate; } var dateRangeEntityStub = new Mock<DateRangeEntityBase>(); dateRangeEnt

我有一个
SetRange
方法,它设置
StartDate
EndDate
属性:

public virtual void SetRange(DateTime? startDate, DateTime? endDate)
{
    this.StartDate = startDate;
    this.EndDate = endDate;
}
var dateRangeEntityStub = new Mock<DateRangeEntityBase>();
dateRangeEntityStub.SetupAllProperties();
// atempt 1
dateRangeEntityStub.Object.SetRange(DateTime.Now.AddYears(-1), DateTime.Now);
// atempt 2
dateRangeEntityStub.Setup(x => x.SetRange(DateTime.Now.AddYears(-1), DateTime.Now));
在对我的存根对象进行测试时,下面将设置
StartDate
EndDate
属性:

public virtual void SetRange(DateTime? startDate, DateTime? endDate)
{
    this.StartDate = startDate;
    this.EndDate = endDate;
}
var dateRangeEntityStub = new Mock<DateRangeEntityBase>();
dateRangeEntityStub.SetupAllProperties();
// atempt 1
dateRangeEntityStub.Object.SetRange(DateTime.Now.AddYears(-1), DateTime.Now);
// atempt 2
dateRangeEntityStub.Setup(x => x.SetRange(DateTime.Now.AddYears(-1), DateTime.Now));

为什么
SetRange
方法不在存根上设置属性?

Moq覆盖每个虚拟方法/属性,并将使用它自己的实现

因此,如果您想保持
SetRange
方法的原始行为,您需要在mock上将
CallBase
设置为
true
,这会告诉Moq也调用原始代码:

var dateRangeEntityStub = new Mock<DateRangeEntityBase>() { CallBase = true };
var dateRangeEntityStub=new Mock(){CallBase=true};

另请参见快速入门:部分

哦,是的。有道理。谢谢