C# 嘲弄+;在c语言中捕获方法返回值的问题#

C# 嘲弄+;在c语言中捕获方法返回值的问题#,c#,mocking,C#,Mocking,我需要模拟一个方法及其返回值,它是一个对象。下面是我在主类中的代码 //**Main Class** var message = CorrelationMessageClient.GetCorrelationMessage( orderRequest.OrderId, CorrelationMessageType.CorrelationFix); if (message != null && !string.IsNullOrEmpty(message.Correlat

我需要模拟一个方法及其返回值,它是一个对象。下面是我在主类中的代码

//**Main Class**
var message = CorrelationMessageClient.GetCorrelationMessage(
      orderRequest.OrderId, CorrelationMessageType.CorrelationFix);
if (message != null && !string.IsNullOrEmpty(message.CorrelationId))
{
        sendOrderResponse = PrepareExecutionReport(
                 new MessageManager(message.ResponseMessage));
}
CorrelationMessageClient.GetCorrelationMessage的返回类型为CorrelationMessage对象的类型

在我的单元测试中,我模拟了如下内容

//**Unit Test class** 
private Mock<ICorrelationMessageClient> _mockCorrelationMessageClient;
_mockCorrelationMessageClient = new Mock<ICorrelationMessageClient>();

var correlationResponse = new CorrelationMessage { 
    CorrelationId = "1212121",ResponseMessage = "Response Successful"};

_mockCorrelationMessageClient.Setup(x => 
    x.GetCorrelationMessage(correlationMessageFix.CorrelationId, 
      correlationMessageFix.CorrelationMessageType))
      .Returns(correlationResponse);

看起来你正在使用最小起订量。在这种情况下,实际调用的方法参数需要在
.Setup
方法中匹配一次,或者您可以允许任何/特定的匹配函数。例如,
It.IsAny
允许特定参数的所有值:

_mockCorrelationMessageClient.Setup(x =>
   x.GetCorrelationMessage(It.IsAny<TypOfId>(), It.IsAny<TypeOfMessageType>()))
   .Returns(correlationResponse);
\u mockCorrelationMessageClient.Setup(x=>
x、 GetCorrelationMessage(It.IsAny(),It.IsAny())
.返回(correlationResponse);
否则,您将获得方法的默认实现,该方法将返回结果类型的默认值(引用类型为null)

请注意,您应该在
.Setup
-中调用
It.IsAny
内联

_mockCorrelationMessageClient.Setup(x =>
   x.GetCorrelationMessage(It.IsAny<TypOfId>(), It.IsAny<TypeOfMessageType>()))
   .Returns(correlationResponse);