Moq - 无法从 x 转换为 System.Func<x>
Moq - Unable to Convert from x to System.Func<x>
我正在尝试模拟这个方法:
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) });
但是错误显示
cannot convert from 'Newtonsoft.Json.JsonSerializerSettings' to
System.Func<Newtonsoft.Json.JsonSerializerSettings,
Newtonsoft.Json.JsonSerializerSettings>
有人知道如何正确模拟它吗?
删除通用参数。您尝试调用的重载并没有按照您的想法执行。
var settings = new JsonSerializerSettings {
ContractResolver = new Utilities.CustomContractResolver(false, null)
};
_service
.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
.Returns(settings);
如果您试图复制原始方法的行为,则可以访问传递的参数。
例如
_service
.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
.Returns<Request>(request => new JsonSerializerSettings {
ContractResolver = new Utilities.CustomContractResolver(false, request.text)
});
我正在尝试模拟这个方法:
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) });
但是错误显示
cannot convert from 'Newtonsoft.Json.JsonSerializerSettings' to
System.Func<Newtonsoft.Json.JsonSerializerSettings, Newtonsoft.Json.JsonSerializerSettings>
有人知道如何正确模拟它吗?
删除通用参数。您尝试调用的重载并没有按照您的想法执行。
var settings = new JsonSerializerSettings {
ContractResolver = new Utilities.CustomContractResolver(false, null)
};
_service
.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
.Returns(settings);
如果您试图复制原始方法的行为,则可以访问传递的参数。
例如
_service
.Setup(x => x.createSerializerSettingsUsingRequest(It.IsAny<Request>()))
.Returns<Request>(request => new JsonSerializerSettings {
ContractResolver = new Utilities.CustomContractResolver(false, request.text)
});