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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http.Json;
namespace HttpClientStudy.UnitTest
{
/// <summary>
/// 基础HttpClient 测试
/// </summary>
public class NormalHttpClientTest
{
private readonly ITestOutputHelper _logger;
public NormalHttpClientTest(ITestOutputHelper outputHelper)
{
_logger = outputHelper;
}
#region Get请求
[Fact]
public async Task GetAllAccounts_Test()
{
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);
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>
/// GET 请求
/// (默认参数方式url传参)
/// </summary>
/// <returns></returns>
[Fact]
public async Task GetAccount_Id_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccount?Id=2");
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(2, result.Data?.Id);
}
/// <summary>
/// GET 请求
/// (中文参数:现在浏览器直接支持,为最大兼容老旧浏览器使用url编码)
/// </summary>
/// <returns></returns>
[Fact]
public async Task GetAccountByName_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
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}");
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.Equal(2, result.Data?.Count);
}
[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]
public async Task GetAccountByService_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var responseMessage = await httpClient.GetAsync("/api/Normal/GetAccountFromServices");
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);
}
}
}