main
wanggaofeng 1 year ago
parent 1b3ec00da3
commit 5741f7adf6

@ -5,6 +5,12 @@ using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Net.Http.Json; using System.Net.Http.Json;
using System.Net;
using Newtonsoft.Json;
using Microsoft.AspNetCore.Mvc;
using System.Text.Json;
using System.Security.Authentication.ExtendedProtection;
using Newtonsoft.Json.Linq;
namespace HttpClientStudy.UnitTest namespace HttpClientStudy.UnitTest
{ {
@ -20,7 +26,7 @@ namespace HttpClientStudy.UnitTest
_logger = outputHelper; _logger = outputHelper;
} }
#region Get请求 #region GET请求
[Fact] [Fact]
public async Task GetAllAccounts_Test() public async Task GetAllAccounts_Test()
@ -208,6 +214,26 @@ namespace HttpClientStudy.UnitTest
Assert.Equal(1, result.Code); Assert.Equal(1, result.Code);
Assert.Equal("服务注入示例",result.Data?.Name); Assert.Equal("服务注入示例",result.Data?.Name);
} }
/// <summary>
/// GET 请求
/// (直接调用System.Net.Http.Json类的扩展方法GetFromJsonAsync 获取 Json 结果)
/// </summary>
/// <returns></returns>
[Fact]
public async Task Get_From_Json_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var result = await httpClient.GetFromJsonAsync<BaseResult<Account>>("/api/Normal/GetAccountFromServices");
Assert.IsType<BaseResult<Account>>(result);
Assert.Equal(1, result.Code);
Assert.Equal("服务注入示例", result.Data?.Name);
}
#endregion #endregion
#region PUT 请求 #region PUT 请求
@ -266,5 +292,140 @@ namespace HttpClientStudy.UnitTest
Assert.Empty(result); Assert.Empty(result);
} }
#endregion #endregion
#region POST 请求
[Fact]
public async Task PostSimple_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
//响应
var responseMessage = await httpClient.PostAsync("/api/Normal/PostSimple", null);
//响应正常
Assert.True(responseMessage.IsSuccessStatusCode);
Assert.NotNull(responseMessage);
var result = await responseMessage.Content.ReadFromJsonAsync<BaseResult<string>>();
Assert.IsType<BaseResult<string>>(result);
Assert.Equal(1, result?.Code);
}
[Fact]
public async Task PostCreate_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
//参数
var para = new Account() {Id=100, Name="小明", Password="123456", Role="Admin" };
//请求体
var plainContent = new StringContent(JsonConvert.SerializeObject(para), Encoding.UTF8, System.Net.Mime.MediaTypeNames.Application.Json);
//发POST请求
var responseMessage = await httpClient.PostAsync("/api/Normal/PostCreate", plainContent);
//确保响应正常
responseMessage.EnsureSuccessStatusCode();
Assert.NotNull(responseMessage);
Assert.True(responseMessage.IsSuccessStatusCode);
var text = await responseMessage.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<CreatedAtActionResult> (text);
Assert.IsType<CreatedAtActionResult>(result);
Assert.Equal(201, result.StatusCode);
Assert.IsType<Newtonsoft.Json.Linq.JObject>(result.Value);
//新创建的对象
var account = JsonConvert.DeserializeObject<Account>(value: result.Value.ToString() ?? "");
Assert.NotNull(account);
Assert.Equal(100,account.Id);
//由于构造函数等原因直接使用ReadFromJsonAsync会异常。
//CreatedAtActionResult? result = await responseMessage.Content.ReadFromJsonAsync<CreatedAtActionResult>(new JsonSerializerOptions() { IncludeFields=true, PropertyNameCaseInsensitive=true});
}
[Fact]
public async Task PostUpdate_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
//参数
var para = new Account() { Id = 1, Name = "小明", Password = "123456", Role = "Admin" };
//发POST请求
var responseMessage = await httpClient.PostAsJsonAsync("/api/Normal/PostUpdate", para);
//确保响应正常
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);
}
[Fact]
public async Task PostRemove_Test()
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
};
var para_id = 2;
//发POST请求(URL传参)
var responseMessage = await httpClient.PostAsync($"/api/Normal/PostRemove?Id={para_id}", null);
//确保响应正常
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(para_id, result.Data?.Id);
}
#endregion
#region DELETE 请求
#endregion
#region OPTIONS 请求
#endregion
#region PATCH 请求
#endregion
#region TRACE 请求
#endregion
#region CONNECT 请求
#endregion
} }
} }

Loading…
Cancel
Save