RoleControllerTest.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using Microsoft.AspNetCore.TestHost;
  2. using Microsoft.Extensions.Hosting;
  3. using MS.Common.Extensions;
  4. using MS.Entities;
  5. using MS.Models.ViewModel;
  6. using MS.WebCore.Core;
  7. using System.Net.Http;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using Xunit;
  11. namespace WebApiTests
  12. {
  13. public class RoleControllerTest
  14. {
  15. const string _testUrl = "/role/";
  16. const string _mediaType = "application/json";
  17. readonly Encoding _encoding = Encoding.UTF8;
  18. [Theory]
  19. [InlineData(1222538617050763264)]
  20. public async Task Delete_Id_ReturnResult(long id)
  21. {
  22. //arrange
  23. string url = $"{_testUrl}?id={id.ToString()}";// url: /role/?id=11111111
  24. using var host = await TestHostBuild.GetTestHost().StartAsync();//启动TestServer
  25. //act
  26. var response = await host.GetTestClientWithToken().DeleteAsync(url);//调用Delete接口
  27. var result = (await response.Content.ReadAsStringAsync()).GetDeserializeObject<ApiResult<ExecuteResult>>();//获得返回结果并反序列化
  28. //assert
  29. Assert.Equal(result.data.IsSucceed, string.IsNullOrWhiteSpace(result.data.Message));
  30. }
  31. [Fact]
  32. public async Task Post_CreateRole_ReturnTrue()
  33. {
  34. //arrange
  35. RoleViewModel viewModel = new RoleViewModel
  36. {
  37. Name = "RoleForPostTest",
  38. DisplayName = "RoleForPostTest"
  39. };
  40. StringContent content = new StringContent(viewModel.ToJsonString(), _encoding, _mediaType);//定义post传递的参数、编码和类型
  41. using var host = await TestHostBuild.GetTestHost().StartAsync();//启动TestServer
  42. //act
  43. var response = await host.GetTestClientWithToken().PostAsync(_testUrl, content); //调用Post接口
  44. var result = (await response.Content.ReadAsStringAsync()).GetDeserializeObject<ApiResult<ExecuteResult<Role>>>();//获得返回结果并反序列化
  45. //assert
  46. Assert.True(result.data.IsSucceed);
  47. //测完把添加的删除
  48. await Delete_Id_ReturnResult(result.data.Result.Id);
  49. }
  50. [Fact]
  51. public async Task Put_UpdateRole_ReturnTrue()
  52. {
  53. //arrange
  54. RoleViewModel viewModel = new RoleViewModel
  55. {
  56. Name = "RoleForPutTest",
  57. DisplayName = "RoleForPutTest"
  58. };
  59. StringContent content = new StringContent(viewModel.ToJsonString(), _encoding, _mediaType);//定义put传递的参数、编码和类型
  60. using var host = await TestHostBuild.GetTestHost().StartAsync();//启动TestServer
  61. var response = await host.GetTestClientWithToken().PostAsync(_testUrl, content);//先添加一个用于更新测试
  62. viewModel.Id = (await response.Content.ReadAsStringAsync()).GetDeserializeObject<ApiResult<ExecuteResult<Role>>>().data.Result.Id;
  63. content = new StringContent(viewModel.ToJsonString(), _encoding, _mediaType);
  64. //act
  65. response = await host.GetTestClientWithToken().PutAsync(_testUrl, content);
  66. var result = (await response.Content.ReadAsStringAsync()).GetDeserializeObject<ApiResult<ExecuteResult>>();
  67. //assert
  68. Assert.True(result.data.IsSucceed);
  69. //测完把添加的删除
  70. await Delete_Id_ReturnResult(viewModel.Id);
  71. }
  72. }
  73. }