Net Core:具有通用 Class T 和参数的 Moq 方法
Net Core: Moq Method with Generic Class T and Parameters
我正在尝试对下面的这种方法进行最小起订量。我将如何使用通用 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..
资源:
Mocking generic method call for any given type parameter
您需要在设置中为 HttpPost
提供通用参数,例如:
// 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(), "");
我正在尝试对下面的这种方法进行最小起订量。我将如何使用通用 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..
资源:
Mocking generic method call for any given type parameter
您需要在设置中为 HttpPost
提供通用参数,例如:
// 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(), "");