当前位置:首页 > Windows程序 > 正文

WebApi的一种集成测试写法(in

2021-03-29 Windows程序

public abstract class ApiTestBase

    {

        public abstract string GetBaseAddress();

 

        protected TResult InvokeGetRequest<TResult>(string api)

        {

            using (var invoker = CreateMessageInvoker())

            {

                using (var cts = new CancellationTokenSource())

                {

                    var request = new HttpRequestMessage(HttpMethod.Get, GetBaseAddress() + api);

                    using (HttpResponseMessage response = invoker.SendAsync(request, cts.Token).Result)

                    {

                        var result = response.Content.ReadAsStringAsync().Result;

                        return JsonConvert.DeserializeObject<TResult>(result);

                    }

                }

            }

        }

 

        protected TResult InvokePostRequest<TResult, TArguemnt>(string api, TArguemnt arg)

        {

            var invoker = CreateMessageInvoker();

            using (var cts = new CancellationTokenSource())

            {

                var request = new HttpRequestMessage(HttpMethod.Post, GetBaseAddress() + api);

                request.Content = new ObjectContent<TArguemnt>(arg, new JsonMediaTypeFormatter());

                using (HttpResponseMessage response = invoker.SendAsync(request, cts.Token).Result)

                {

                    var result = response.Content.ReadAsStringAsync().Result;

                    return JsonConvert.DeserializeObject<TResult>(result);

                }

            }

        }

 

        private HttpMessageInvoker CreateMessageInvoker()

        {

            var config = new HttpConfiguration();

            WebApiConfig.Register(config);

            var server = new HttpServer(config);

            var messageInvoker = new HttpMessageInvoker(server);

            return messageInvoker;

        }

    }

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69547.html