C# Moq设置能否识别相同的列表对象?
我有一个带有C# Moq设置能否识别相同的列表对象?,c#,.net-core,moq,C#,.net Core,Moq,我有一个带有offerIds的列表,我将其传递给Moq设置。我确信在代理方法执行中,我使用相同的列表调用此方法,但它返回null。我的问题是,Moq能否将参考对象f.e.列表识别为相同的设置参数 _userOrderRepositoryMock .Setup(x => x.GetOrderIdsByOfferIds(offerIds)) .ReturnsAsync(new Dictionary<Guid, Guid>
offerIds
的列表,我将其传递给Moq设置。我确信在代理方法执行中,我使用相同的列表调用此方法,但它返回null
。我的问题是,Moq能否将参考对象f.e.列表
识别为相同的设置
参数
_userOrderRepositoryMock
.Setup(x => x.GetOrderIdsByOfferIds(offerIds))
.ReturnsAsync(new Dictionary<Guid, Guid>() { });
\u userOrderRepositoryMock
.Setup(x=>x.GetOrderIdsByOfferIds(offerIds))
.ReturnsAsync(新字典(){});
Moq在像上面一样使用时只需进行相等比较。列表
是一种引用类型,因此两个列表永远不会相等,即使它们包含相似的内容。要让它工作,我建议您实际使用It
。比如:
\u userOrderRepositoryMock
.Setup(x=>x.GetOrderIdsByOfferIds(
It.Is(i=>i.All(offerIds))
))
.ReturnsAsync(新字典(){});
尽管如此,这取决于提供了什么。如果offerIds
是一种值类型,那么这将起作用,如果不是,则需要编写一些LINQ或相等函数来定义希望它们如何在这些对象上执行相等
请参阅,以了解有关这类内容的更多信息。Moq在使用时与上述方法相同,只需进行相等比较。列表
是一种引用类型,因此两个列表永远不会相等,即使它们包含相似的内容。要让它工作,我建议您实际使用It
。比如:
\u userOrderRepositoryMock
.Setup(x=>x.GetOrderIdsByOfferIds(
It.Is(i=>i.All(offerIds))
))
.ReturnsAsync(新字典(){});
尽管如此,这取决于提供了什么。如果offerIds
是一种值类型,那么这将起作用,如果不是,则需要编写一些LINQ或相等函数来定义希望它们如何在这些对象上执行相等
有关此类内容的详细信息,请参阅。仅当它们是相同的实例时。您可以使用It.IsAny()
松开匹配,仅当它们是相同的实例时。您可以使用It.IsAny()松开匹配。