You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.TestHost;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using Newtonsoft.Json;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Moq;
using WebApiStudy.Model;
using WebApiStudy.WebApp;
namespace WebApiStudy.IntegrationTest
{
[Collection("GlobalTestServer")]
public class UserControllerTest
{
private TestServer _server;
private readonly HttpClient _client;
public UserControllerTest(TestServerFixture testServer)
{
_server = testServer.TestServer;
_client = _server.CreateClient();
}
[Fact]
public async Task GetUsers_Test()
{
var response = await _client.GetAsync("/api/user/GetAllUser");
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
IList<User> list = JsonConvert.DeserializeObject<IList<User>>(responseString);
Assert.Equal(5, list.Count);
}
[Fact]
public async Task AddUser_Test()
{
Uri uri = new Uri("http://localhost:5000/api/user/AddUser");
HttpContent httpContent = new StringContent("{\"id\": 55,\"name\": \"张三\",\"age\": 23,\"gender\": 1}", System.Text.Encoding.UTF8, "application/json");
//HttpRequestMessage requestMessage = new HttpRequestMessage();
//requestMessage.RequestUri =uri ;
//requestMessage.Method = HttpMethod.Post;
//requestMessage.Content =httpContent;
var response = await _client.PostAsync(uri, httpContent);
response.EnsureSuccessStatusCode();
var responseString = await response.Content.ReadAsStringAsync();
(bool result, User user) = JsonConvert.DeserializeObject<ValueTuple<bool,User>>(responseString);
Assert.True(result);
Assert.Equal(55, user.Id);
}
}
}