C# Moq-无法从x转换为System.Func<;x>;

C# Moq-无法从x转换为System.Func<;x>;,c#,asp.net-core,moq,xunit,C#,Asp.net Core,Moq,Xunit,我试图模仿这种方法: public JsonSerializerSettings createSerializerSettingsUsingRequest(Request request) { var serializerSettings = new JsonSerializerSettings() { ContractResolver = new Utilities.CustomContract

我试图模仿这种方法:

 public JsonSerializerSettings createSerializerSettingsUsingRequest(Request request)
        {

            var serializerSettings = new JsonSerializerSettings()
            {
                ContractResolver = new Utilities.CustomContractResolver(false, request.text)
            };
            return serializerSettings;
        }
这就是我嘲笑的方式:

 _service = new Mock<IService>();
 _service.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
                                .Returns<JsonSerializerSettings>(new JsonSerializerSettings { ContractResolver = new Utilities.CustomContractResolver(false, null) });
_service=new Mock();
_service.Setup(x=>x.createSerializerSettingsUsingRequest(It.IsAny()))
.Returns(新JsonSerializerSettings{ContractResolver=new Utilities.CustomContractResolver(false,null)});
但错误表明

无法将“Newtonsoft.Json.JsonSerializerSettings”转换为
System.Func


有人知道如何正确地模拟它吗?

删除泛型参数。您试图调用的重载与您认为的不同

var settings = new JsonSerializerSettings { 
    ContractResolver = new Utilities.CustomContractResolver(false, null) 
};
_service
    .Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
    .Returns(settings);
var设置=新的JsonSerializerSettings{
ContractResolver=new Utilities.CustomContractResolver(false,null)
};
_服务
.Setup(x=>x.createSerializerSettingsUsingRequest(It.IsAny()))
.返回(设置);
如果您试图复制原始方法的行为,那么可以访问传递的参数

比如说

_service
    .Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
    .Returns<Request>(request => new JsonSerializerSettings { 
        ContractResolver = new Utilities.CustomContractResolver(false, request.text) 
    });
\u服务
.Setup(x=>x.createSerializerSettingsUsingRequest(It.IsAny()))
.Returns(request=>newjsonserializersettings{
ContractResolver=new Utilities.CustomContractResolver(false,request.text)
});