单元测试,模拟用户Get登陆,并携带登录后的token访问接口
HttpClient _httpClient; HttpClient _businessHttpClient; private async Task<string> GetAccessToken() { _businessHttpClient = new HttpClient(); _businessHttpClient.BaseAddress = new Uri("http://localhost:8998/Meet.WebApi/"); _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("http://localhost:8998/HRManage.WebApi/api/UserLogin?username=admin&password=111111"); var parameters = new Dictionary<string, string>(); parameters.Add("username", "admin"); parameters.Add("password", "111111"); var response = await _httpClient.PostAsync(_httpClient.BaseAddress, new FormUrlEncodedContent(parameters)); var responseValue = await response.Content.ReadAsStringAsync(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var data = JsonConvert.DeserializeObject<ResultEntity<UserLoginResultDTO>>(responseValue); return data.Data.AccessToken; } else { return string.Empty; } } [TestMethod] public void GetMeetingById() { string tokenstring = GetAccessToken().Result; _businessHttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tokenstring); var response = _businessHttpClient.GetAsync("Meet/GetMeetingById?Id=5C0062FF-542A-4C6E-BE28-5998EC3CEDE4").Result; var responseValue = response.Content.ReadAsStringAsync().Result; _businessHttpClient.Dispose(); var data = JsonConvert.DeserializeObject<ResultEntity<MeetingOutDto>>(responseValue); Assert.AreEqual(true, JObject.Parse(responseValue)["IsSuccess"].Value<bool>(), JObject.Parse(responseValue)["Msg"].Value<string>()); }
Post方式:
HttpClient _httpClient; //模拟登陆 public async Task<bool> Login() { _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("http://localhost:8088");//14199 //9011 LoginInput log = new LoginInput() { mobile = "13981711707", pwd = "123123" }; HttpContent httpcontent = new StringContent(JsonConvert.SerializeObject(log)); httpcontent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _httpClient.PostAsync("hcApi/Login/login", httpcontent); var responseValue = await response.Content.ReadAsStringAsync(); if (response.StatusCode == System.Net.HttpStatusCode.OK) { return JObject.Parse(responseValue)["isOK"].Value<bool>(); } else { return false; } } /// <summary> /// 根据条件获取卫生院信息 /// </summary> /// <returns></returns> [TestMethod] public async Task GetHealthCenterInfo() { await Login(); var response = await _httpClient.GetAsync("hcApi/SampleEntry/GetHealthCenterInfo?hcID=57&&keyWord=&&pageIndex=1&&pageSize=10"); var responseValue = await response.Content.ReadAsStringAsync(); _httpClient.Dispose(); Assert.AreEqual(0, JObject.Parse(responseValue)["errorCode"].Value<int>(), JObject.Parse(responseValue)["msg"].Value<string>()); }
标签:
c#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】