C# 使用NSabstitute返回模拟的方法';0';而不是HttpStatusCode.OK

C# 使用NSabstitute返回模拟的方法';0';而不是HttpStatusCode.OK,c#,.net,unit-testing,xunit,nsubstitute,C#,.net,Unit Testing,Xunit,Nsubstitute,为什么在模拟我的服务并将返回值指定为HttpStatusCode后,我会得到int值'0'。OK 首先,我嘲笑我的服务: 最终返回值为statusCode=0 我所期望的是:好的正确的答案是 Returns()仅适用于给定的参数组合,因此其他 对此方法的调用将返回默认值 给定的参数将与配置的参数进行比较。在您的情况下,xmlDocument的配置实例与传递给测试类中的方法的实例不同 您有两个选择: 忽略给定的参数-但丢失一些测试覆盖率 var result = service.DoS

为什么在模拟我的服务并将返回值指定为HttpStatusCode后,我会得到int值'0'。OK

  • 首先,我嘲笑我的服务:
  • 最终返回值为statusCode=0

  • 我所期望的是:好的正确的答案是

    Returns()仅适用于给定的参数组合,因此其他 对此方法的调用将返回默认值

    给定的参数将与配置的参数进行比较。在您的情况下,
    xmlDocument
    的配置实例与传递给测试类中的方法的实例不同

    您有两个选择:
    忽略给定的参数-但丢失一些测试覆盖率

    var result = 
       service.DoSomething(null).ReturnForAnyArgs(HttpStatusCode.OK);
    
    在返回预期值之前验证给定参数

    var result = service
        .DoSomething(Arg.Is<XmlDocument>(doc => doc != null))
        .Returns(HttpStatusCode.OK)
    
    var结果=服务
    .DoSomething(参数为(doc=>doc!=null))
    .Returns(HttpStatusCode.OK)
    
    正确答案是

    Returns()仅适用于给定的参数组合,因此其他 对此方法的调用将返回默认值

    给定的参数将与配置的参数进行比较。在您的情况下,
    xmlDocument
    的配置实例与传递给测试类中的方法的实例不同

    您有两个选择:
    忽略给定的参数-但丢失一些测试覆盖率

    var result = 
       service.DoSomething(null).ReturnForAnyArgs(HttpStatusCode.OK);
    
    在返回预期值之前验证给定参数

    var result = service
        .DoSomething(Arg.Is<XmlDocument>(doc => doc != null))
        .Returns(HttpStatusCode.OK)
    
    var结果=服务
    .DoSomething(参数为(doc=>doc!=null))
    .Returns(HttpStatusCode.OK)
    
    后一种方法是正确的,应该是公认的答案后一种方法是正确的,应该是公认的答案