diff --git a/HttpClientStudy.UnitTest/NormalHttpClientTest.cs b/HttpClientStudy.UnitTest/NormalHttpClientTest.cs index c870b42..47ba517 100644 --- a/HttpClientStudy.UnitTest/NormalHttpClientTest.cs +++ b/HttpClientStudy.UnitTest/NormalHttpClientTest.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Mvc; using System.Text.Json; using System.Security.Authentication.ExtendedProtection; using Newtonsoft.Json.Linq; +using System.Text.Json.Serialization.Metadata; namespace HttpClientStudy.UnitTest { @@ -414,9 +415,91 @@ namespace HttpClientStudy.UnitTest #endregion #region DELETE 请求 + + [Fact] + public async Task Delete_Test() + { + HttpClient httpClient = new HttpClient() + { + BaseAddress = new Uri(TestConfig.WebApiBaseUrl), + }; + + var para_id = 2; + + //发POST请求(URL传参) + var responseMessage = await httpClient.DeleteAsync($"/api/Normal/Delete?Id={para_id}"); + + //确保响应正常 + responseMessage.EnsureSuccessStatusCode(); + + + Assert.NotNull(responseMessage); + Assert.True(responseMessage.IsSuccessStatusCode); + + var result = await responseMessage.Content.ReadFromJsonAsync>(); + Assert.IsType>(result); + Assert.Equal(1, result.Code); + + Assert.Equal(para_id, result.Data); + } + + [Fact] + public async Task Delete2_Test() + { + HttpClient httpClient = new HttpClient() + { + BaseAddress = new Uri(TestConfig.WebApiBaseUrl), + }; + + //Delete 默认不使用请求体,如果使用的话,需要Content配合 RequestMessage + + + var account = new Account() { Id = 2, Name = "小明", Password = "123456", Role = "Admin" }; + + var requestMessage = new HttpRequestMessage(HttpMethod.Delete, "/api/Normal/DeleteForJsonData"); + //requestMessage.Content = JsonContent.Create(account); + + //也可以下面的,极少有使用(可自定义JsonSerializerOptions) + //requestMessage.Content = JsonContent.Create(account,JsonTypeInfo.CreateJsonTypeInfo( JsonSerializerOptions.Default),new System.Net.Http.Headers.MediaTypeHeaderValue("application/json","utf-8")); + + //发POST请求(URL传参) + var responseMessage = await httpClient.SendAsync(requestMessage); + + //确保响应正常 + responseMessage.EnsureSuccessStatusCode(); + + + Assert.NotNull(responseMessage); + Assert.True(responseMessage.IsSuccessStatusCode); + + var result = await responseMessage.Content.ReadFromJsonAsync>(); + Assert.IsType>(result); + Assert.Equal(1, result.Code); + } #endregion #region OPTIONS 请求 + [Fact] + public async Task OPTIONS_Test() + { + HttpClient httpClient = new HttpClient() + { + BaseAddress = new Uri(TestConfig.WebApiBaseUrl), + }; + + var requestMessage = new HttpRequestMessage(HttpMethod.Options, "/api/Normal/OptionsSimple"); + + //响应 + var responseMessage = await httpClient.SendAsync(requestMessage); + + //响应正常 + Assert.True(responseMessage.IsSuccessStatusCode); + Assert.NotNull(responseMessage); + + var result = await responseMessage.Content.ReadFromJsonAsync>(); + Assert.IsType>(result); + Assert.Equal(1, result?.Code); + } #endregion #region PATCH 请求