You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

199 lines
6.5 KiB
C#

1 year ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
1 year ago
using System.Net.Http.Json;
1 year ago
namespace HttpClientStudy.UnitTest
{
/// <summary>
/// 基础HttpClient 测试
/// </summary>
public class NormalHttpClientTest
{
private readonly ITestOutputHelper _logger;
public NormalHttpClientTest(ITestOutputHelper outputHelper)
{
_logger = outputHelper;
}
1 year ago
#region Get请求
1 year ago
[Fact]
1 year ago
public async Task GetAllAccounts_Test()
1 year ago
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAllAccounts");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
1 year ago
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
1 year ago
}
1 year ago
1 year ago
/// <summary>
/// GET 请求
/// (默认参数方式url传参)
/// </summary>
/// <returns></returns>
1 year ago
[Fact]
public async Task GetAccount_Id_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
1 year ago
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccount?Id=2");
1 year ago
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
1 year ago
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<Account>>();
Assert.IsType<BaseResult<Account>>(result);
1 year ago
Assert.Equal(1, result.Code);
1 year ago
Assert.Equal(2, result.Data?.Id);
1 year ago
}
1 year ago
/// <summary>
/// GET 请求
/// (中文参数:现在浏览器直接支持,为最大兼容老旧浏览器使用url编码)
/// </summary>
/// <returns></returns>
1 year ago
[Fact]
1 year ago
public async Task GetAccountByName_Test()
1 year ago
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
1 year ago
var ChineseName = System.Net.WebUtility.UrlEncode("管理员01");
var ChineseName2 = System.Net.WebUtility.UrlEncode("管理员02");
//现在浏览器直接支持中文参数
//var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountByName?ChineseName=管理员01&ChineseName2=管理员02");
//兼容老浏览器写法
var responseMessage = await httpClient.GetAsync($"/api/Normal/GetAccountByName?ChineseName={ChineseName}&ChineseName2={ChineseName2}");
1 year ago
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
1 year ago
Assert.Equal(2, result.Data?.Count);
1 year ago
}
[Fact]
public async Task GetAccountByRole_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountByRole");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
}
[Fact]
1 year ago
public async Task GetAccountByService_Test()
1 year ago
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
1 year ago
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountFromServices");
1 year ago
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
}
#endregion
/// <summary>
/// Put 请求
/// </summary>
/// <returns></returns>
[Fact]
public async Task PutDemo_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/PutDemo");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
}
/// <summary>
/// Head 请求
/// </summary>
/// <returns></returns>
[Fact]
public async Task HeadDemo_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/HeadDemo");
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<List<Account>>>();
Assert.IsType<BaseResult<List<Account>>>(result);
Assert.Equal(1, result.Code);
Assert.NotNull(result.Data);
}
1 year ago
}
}