为什么 C# Xunit Mock 在 IQueryable 上返回空枚举
Why C# Xunit Mock returning empty enumeration on IQueryable
试图模拟存储库中具有 return 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);
}
在执行测试时,我正在获取模拟方法“GetQueryableFromSql”的结果,因为“枚举未产生任何结果”
enter image description here
据我了解起订量,您必须以不同的方式设置您的方法:
mockZonal.Setup(r => r.GetQueryableFromSql<ZonalDefinition>(It.IsAny<SqlQuerySpec>(),
It.IsAny<FeedOptions>()))
.Returns(()=>list);
按照您的设置方式,只有当那些确切的对象被传递给方法(它们不会)时它才会匹配。
如果您需要更具体的匹配参数,请查看 the documentation。
试图模拟存储库中具有 return 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);
}
在执行测试时,我正在获取模拟方法“GetQueryableFromSql”的结果,因为“枚举未产生任何结果”
enter image description here
据我了解起订量,您必须以不同的方式设置您的方法:
mockZonal.Setup(r => r.GetQueryableFromSql<ZonalDefinition>(It.IsAny<SqlQuerySpec>(),
It.IsAny<FeedOptions>()))
.Returns(()=>list);
按照您的设置方式,只有当那些确切的对象被传递给方法(它们不会)时它才会匹配。
如果您需要更具体的匹配参数,请查看 the documentation。