为什么C#Xunit模拟在IQueryable上返回空枚举

为什么C#Xunit模拟在IQueryable上返回空枚举,c#,asp.net-core,xunit,C#,Asp.net Core,Xunit,试图模拟存储库中返回IQueryable的一个方法。 请参见单元测试方法 [Fact] public void TestMethod() { var mockZonal = new Mock<IBaseRepository<ZonalDefinition>>().SetupAllProperties(); var list = new List<ZonalDefinition>() { new ZonalDe

试图模拟存储库中返回IQueryable的一个方法。 请参见单元测试方法

[Fact]
    public void TestMethod()
    {
        var mockZonal = new Mock<IBaseRepository<ZonalDefinition>>().SetupAllProperties();


        var list = new List<ZonalDefinition>() { new ZonalDefinition() { DestinationZone = "401" } }.AsQueryable();

        mockZonal.Setup(r => r.GetQueryableFromSql<ZonalDefinition>(new SqlQuerySpec(), new FeedOptions())).Returns(()=>list);

        _repoFactory.Setup(r => r.GetGenericRepository<ZonalDefinition>(It.IsAny<string>(), It.IsAny<string>())).Returns(mockZonal.Object);

        var afShipmentDetail = new AirFreightShipmentDetail();

        var response = _quoteRespository.SetCXShipmentTargetValue(afShipmentDetail);
        Assert.NotNull(response);
    }
[事实]
公共void TestMethod()
{
var mockZonal=new Mock().SetupAllProperties();
var list=new list(){new ZonalDefinition(){DestinationZone=“401”}}.AsQueryable();
mockZonal.Setup(r=>r.GetQueryableFromSql(newsqlqueryspec(),newfeedoptions())。返回(()=>list);
_Setup(r=>r.GetGenericRepository(It.IsAny(),It.IsAny()).Returns(mockZonal.Object);
var afShipmentDetail=新空运细节();
var响应=_quoteRespository.SetCXShipmentTargetValue(afShipmentDetail);
Assert.NotNull(响应);
}
执行测试时,我将模拟方法“GetQueryableFromSql”的结果作为“枚举未产生结果”


据我所知,最小起订量的设置方法必须不同:

mockZonal.Setup(r => r.GetQueryableFromSql<ZonalDefinition>(It.IsAny<SqlQuerySpec>(),
                                                            It.IsAny<FeedOptions>()))
                      .Returns(()=>list);
mockZonal.Setup(r=>r.GetQueryableFromSql(It.IsAny()),
It.IsAny())
.返回(()=>列表);
按照您设置它的方式,只有当这些确切的对象被传递给方法时(它们不会这样做),它才会匹配

如果需要更具体地说明要匹配的参数,请查看