From 5741f7adf623f99b5f68a61cc5a9edf837c4d2e2 Mon Sep 17 00:00:00 2001
From: wanggaofeng <15601716045@163.com>
Date: Sun, 7 Jan 2024 19:45:24 +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 | 165 +++++++++++++++++-
1 file changed, 163 insertions(+), 2 deletions(-)
diff --git a/HttpClientStudy.UnitTest/NormalHttpClientTest.cs b/HttpClientStudy.UnitTest/NormalHttpClientTest.cs
index 15df1a5..c870b42 100644
--- a/HttpClientStudy.UnitTest/NormalHttpClientTest.cs
+++ b/HttpClientStudy.UnitTest/NormalHttpClientTest.cs
@@ -5,6 +5,12 @@ using System.Text;
using System.Threading.Tasks;
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
{
@@ -20,7 +26,7 @@ namespace HttpClientStudy.UnitTest
_logger = outputHelper;
}
- #region Get请求
+ #region GET请求
[Fact]
public async Task GetAllAccounts_Test()
@@ -208,6 +214,26 @@ namespace HttpClientStudy.UnitTest
Assert.Equal(1, result.Code);
Assert.Equal("服务注入示例",result.Data?.Name);
}
+
+ ///
+ /// GET 请求
+ /// (直接调用System.Net.Http.Json类的扩展方法GetFromJsonAsync 获取 Json 结果)
+ ///
+ ///
+ [Fact]
+ public async Task Get_From_Json_Test()
+ {
+ HttpClient httpClient = new HttpClient()
+ {
+ BaseAddress = new Uri(TestConfig.WebApiBaseUrl),
+ };
+
+ var result = await httpClient.GetFromJsonAsync>("/api/Normal/GetAccountFromServices");
+
+ Assert.IsType>(result);
+ Assert.Equal(1, result.Code);
+ Assert.Equal("服务注入示例", result.Data?.Name);
+ }
#endregion
#region PUT 请求
@@ -266,5 +292,140 @@ namespace HttpClientStudy.UnitTest
Assert.Empty(result);
}
#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>();
+ Assert.IsType>(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 (text);
+
+ Assert.IsType(result);
+ Assert.Equal(201, result.StatusCode);
+ Assert.IsType(result.Value);
+
+ //新创建的对象
+ var account = JsonConvert.DeserializeObject(value: result.Value.ToString() ?? "");
+
+ Assert.NotNull(account);
+ Assert.Equal(100,account.Id);
+
+ //由于构造函数等原因,直接使用ReadFromJsonAsync,会异常。
+ //CreatedAtActionResult? result = await responseMessage.Content.ReadFromJsonAsync(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>();
+ Assert.IsType>(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>();
+ Assert.IsType>(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
}
-}
+}