main
wanggaofeng 1 year ago
parent 3797f954b5
commit 4cc0649995

@ -69,6 +69,32 @@ namespace HttpClientStudy.UnitTest
Assert.Equal(2, result.Data?.Id); Assert.Equal(2, result.Data?.Id);
} }
/// <summary>
/// GET 请求
/// (路由传参)
/// </summary>
/// <returns></returns>
[Fact]
public async Task GetAccount_Route_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccount/管理员02");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<Account>>();
Assert.IsType<BaseResult<Account>>(result);
Assert.Equal(1, result.Code);
Assert.Equal("管理员02", result.Data?.Name);
}
/// <summary> /// <summary>
/// GET 请求 /// GET 请求
/// (中文参数:现在浏览器直接支持,为最大兼容老旧浏览器使用url编码) /// (中文参数:现在浏览器直接支持,为最大兼容老旧浏览器使用url编码)
@ -102,6 +128,11 @@ namespace HttpClientStudy.UnitTest
Assert.Equal(2, result.Data?.Count); Assert.Equal(2, result.Data?.Count);
} }
/// <summary>
/// GET 请求
/// (查询参数传参)
/// </summary>
/// <returns></returns>
[Fact] [Fact]
public async Task GetAccountByRole_Test() public async Task GetAccountByRole_Test()
{ {
@ -110,7 +141,7 @@ namespace HttpClientStudy.UnitTest
BaseAddress = new Uri(TestConfig.WebApiBaseUrl), BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
}; };
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountByRole"); var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountByRole?role=Admin");
responseMessage.EnsureSuccessStatusCode(); responseMessage.EnsureSuccessStatusCode();
@ -120,9 +151,43 @@ namespace HttpClientStudy.UnitTest
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>(); var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result); Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code); Assert.Equal(1, result.Code);
Assert.NotNull(result.Data); //每项的角色都是查询的角色
Assert.False(result.Data?.Any(d=>d.Role != "Admin"));
}
/// <summary>
/// GET 请求
/// (请求头传参中文必须Url编码,服务端Url解码后使用)
/// </summary>
/// <returns></returns>
[Fact]
public async Task GetAccountFromHeader_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
//中文参数必须先编码
httpClient.DefaultRequestHeaders.Add("name", System.Net.WebUtility.UrlEncode("管理员01"));
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountFromHeader");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<Account>>();
Assert.IsType<BaseResult<Account>>(result);
Assert.Equal(1, result.Code);
Assert.Equal(1,result.Data?.Id);
} }
/// <summary>
/// GET 请求
/// (客户端不传参服务端参数直接来由IoC中注入的服务)
/// </summary>
/// <returns></returns>
[Fact] [Fact]
public async Task GetAccountByService_Test() public async Task GetAccountByService_Test()
{ {
@ -138,15 +203,17 @@ namespace HttpClientStudy.UnitTest
Assert.NotNull(responseMessage); Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode); Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>(); var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<Account>>();
Assert.IsType<BaseResult<List<Account>>>(result); Assert.IsType<BaseResult<Account>>(result);
Assert.Equal(1, result.Code); Assert.Equal(1, result.Code);
Assert.NotNull(result.Data); Assert.Equal("服务注入示例",result.Data?.Name);
} }
#endregion #endregion
#region PUT 请求
/// <summary> /// <summary>
/// Put 请求 /// Put 请求
/// (新建或替换、更新资源)
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Fact] [Fact]
@ -157,21 +224,24 @@ namespace HttpClientStudy.UnitTest
BaseAddress = new Uri(TestConfig.WebApiBaseUrl), BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
}; };
var responseMessage = await httpClient.GetAsync("/api/Normal/PutDemo"); var responseMessage = await httpClient.PutAsync("/api/Normal/PutDemo?id=2",null);
responseMessage.EnsureSuccessStatusCode(); responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage); Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode); Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>(); var result = await responseMessage.Content.ReadAsStringAsync();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
} }
#endregion
#region HEAD 请求
/// <summary> /// <summary>
/// Head 请求 /// Head 请求
/// 注意HttpClient没有直接提供HEAD请求方法
/// 步骤1构建 HttpRequestMessage 对象设置HttpMethod.Head
/// 步骤2把上步构建的HttpRequestMessage 对象,作为参数传递给 HttpClient实例的 Send 或 SendAsync 方法
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[Fact] [Fact]
@ -182,17 +252,19 @@ namespace HttpClientStudy.UnitTest
BaseAddress = new Uri(TestConfig.WebApiBaseUrl), BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
}; };
var responseMessage = await httpClient.GetAsync("/api/Normal/HeadDemo"); var requestMessage = new HttpRequestMessage(HttpMethod.Head, "/api/Normal/HeadDemo?Id=2");
HttpResponseMessage responseMessage = await httpClient.SendAsync(requestMessage);
responseMessage.EnsureSuccessStatusCode(); responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage); Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode); Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>(); //head请求没有返回体
Assert.IsType<BaseResult<List<Account>>>(result); var result = await responseMessage.Content.ReadAsStringAsync();
Assert.Equal(1, result.Code); Assert.Empty(result);
Assert.NotNull(result.Data);
} }
#endregion
} }
} }

Loading…
Cancel
Save