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)
});