From d317c5b0b696d8f6e09a8e18fb505e4dfc9d2c7b Mon Sep 17 00:00:00 2001
From: wanggaofeng <15601716045@163.com>
Date: Sun, 7 Jan 2024 21:19:02 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../NormalHttpClientTest.cs                   | 83 +++++++++++++++++++
 1 file changed, 83 insertions(+)

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<BaseResult<int>>();
+            Assert.IsType<BaseResult<int>>(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<Account>( 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<BaseResult<Account>>();
+            Assert.IsType<BaseResult<Account>>(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<BaseResult<string>>();
+            Assert.IsType<BaseResult<string>>(result);
+            Assert.Equal(1, result?.Code);
+        }
         #endregion
 
         #region PATCH 请求