Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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设置能否识别相同的列表对象?_C#_.net Core_Moq - Fatal编程技术网

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()松开匹配。