我有一个带有以下签名的方法: 如您所见,该模型是通用类型。 从测试代码中调用该方法,如下所示: 我为提供者提供了一个模拟对象。 我需要伪造这个方法的调用,返回我提供的值,即我需要这样的东西: 测试运行时,不会返回我尝试设置的值。 我不能使用It.IsAny(),因为 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在尝试在下面将此方法起订量。 我将如何使用通用 Class T 起订一个方法? 以下是方法和目前正在尝试的解决方案,
方法:
public async Task<TV> HttpPost<T, TV>(string url, T prm, string accessToken = null)
{
try
{
if ((accessToken ?? "").Length > 0)
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using (var result = await _client.PostAsJsonAsync(url, prm))
{
result.EnsureSuccessStatusCode();
using (var content = result.Content)
{
var ret = await content.ReadAsJsonAsync<TV>();
return ret;
}
}
}
catch (Exception ex)
{
var message = $"Url: {url}, Data: {JsonConvert.SerializeObject(prm)}";
ex.Data["Url"] = message;
throw;
}
}
试图:
var mock = new Mock<HttpDataLayerUtilsAsync>();
mock.Setup(b => b.HttpPost(It.IsAny<string>, It.IsAny <CustomDataModelRequest>).Returns..
资源:
您需要在设置中向HttpPost
提供通用 arguments,例如:
// T TV
.Setup(b => b.HttpPost<CustomDataModelRequest, CustomDataModelResponse>(
It.IsAny<string>(),
It.IsAny<CustomDataModelRequest>(),
null))
以及传递可选参数的值。
对于Return
,您可以使用:
.ReturnsAsync(new CustomDataModelResponse());
然后你可以这样称呼它:
var result = await mock.Object.HttpPost<CustomDataModelRequest, CustomDataModelResponse>("", new CustomDataModelRequest(), "");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.