专栏首页知识累积使用TestServer测试ASP.NET Core API

使用TestServer测试ASP.NET Core API

今儿给大家分享下,在ASP.NET Core下使用TestServer进行集成测试,这意味着你可以在没有IIS服务器或任何外部事物的情况下测试完整的Web应用程序。下面给出示例: 

 public Startup(IConfiguration configuration, IHostingEnvironment env)
        {
            Configuration = configuration;
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

            builder.AddEnvironmentVariables();
            Configuration = builder.Build();

            AutoMapperConfig.RegisterMappings();
        }
        [HttpGet]
        [Route("HomeVideo")]
        [ProducesResponseType(typeof(VideoProHomeDataModel), (int)HttpStatusCode.OK)]
        public HttpResponseMessage HomeVideo(int pd)
        {
            if (pd == 0)
                return Error("参数 pd 不能为 0");
            var result = _videoService.HomeVideoList();

            var identityList = new List<string>();
            identityList.AddRange(result.LookBack.Select(x => x.VideoIdentity));
            identityList.AddRange(result.SpeciaList.Select(x => x.VideoIdentity));

            var allVideoPageView = HttpLinkVideoPlay.GetVidepPageViewList(pd, ProjectName, HttpDefaultValue.VideoModuleName, identityList).KeyList.ToDictionary(x => x.CounterKey);

            result.TopAdvList.ForEach(x =>
            {
                x.VideoImg = ReplaceVideoImg(x.VideoImg, VideoMaxImg);
            });

            result.LookBack.ForEach(x =>
            {
                x.VideoImg = ReplaceVideoImg(x.VideoImg, VideoMinImg);
                if (allVideoPageView.ContainsKey(x.VideoIdentity))
                {
                    x.Pageview = allVideoPageView[x.VideoIdentity].KeyCount;
                }
            });
            result.SpeciaList.ForEach(x =>
            {
                x.VideoImg = ReplaceVideoImg(x.VideoImg, VideoMinImg);
                if (allVideoPageView.ContainsKey(x.VideoIdentity))
                {
                    x.Pageview = allVideoPageView[x.VideoIdentity].KeyCount;
                }
            });
            return Success(result);
        }
  1. 添加一个新的Test项目
  2. 添加对Web项目的引用
  3. 添加NuGet包: Microsoft.AspNetCore.TestHost
  4. 创建一个测试
public class TestStartup : Startup
    {
        public TestStartup(IConfiguration configuration, IHostingEnvironment env) : base(configuration, env)
        {
        }

        public void ConfigureTestServices(IServiceCollection services)
        {
             // todo:为测试环境配置服务
        }
    }
[TestClass]
public class Tests
{
    [TestMethod]
    public async Task TestMethod1()
    {
        var webHostBuilder =
              new WebHostBuilder()
                    .UseEnvironment("Development")
                    .UseStartup<TestStartup>(); 

        using (var server = new TestServer(webHostBuilder))
        using (var client = server.CreateClient())
        {
            string result = await client.GetStringAsync("/api/pro/HomeVideo?pd=2");
             Assert.AreEqual(result.TopAdvList.Count > 0, true);
        }
    }
}

 以上就是ASP.NET Core集成测试的简单介绍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Repeater的嵌套

    经常会遇到需要嵌套的地方,比如说回复帖子等,这时候可以使用Repeater来进行嵌套,据说同样适用于DataList,代码如下:

    徐大嘴
  • 在 .NET Core 中运行 JavaScript

    在 .NET Framework 时,我们可以通过V8.NET等组件来运行 JavaScript,不过目前我看了好几个开源组件包括V8.NET都还不支持 .NE...

    晓晨
  • dotnet 控制台 Hangfire 后台定时任务

    本文告诉大家如何在 dotnet core 的控制台通过 Hangfire 开启后台定时任务

    林德熙
  • .Net Core 2.0的一些不大一样的地方(一)——基础身份认证

    近日,把之前使用.net core 1.0写的网站,使用.net core 2.0改写了一下,发现一些不大一样的地方,如果不注意的话,会出现些问题。 一、先说下...

    徐大嘴
  • 关于ASP.NET MVC中使用Forms验证的问题

    表单验证(Forms验证)是一个基于票据(ticket-based)[也称为基于令牌(token-based)]的系统。这意味着当用户登录系统以后,他们得到一个...

    徐大嘴
  • .Net Core系列教程(三)——使用Mongodb

    本文中,假定你已经安装好了Mongodb、及ASP.NET Core的开发环境。本文主要说下在ASP.NET Core中怎样连接Mongodb数据库: 一、在A...

    徐大嘴
  • DDD领域驱动设计理论篇 - 学习笔记

      在加入X公司后,开始了ASP.NET Core+Docker+Linux的技术实践,也开始了微服务架构的实践。在微服务的学习中,有一本微软官方出品的《.NE...

    Edison Zhou
  • ASP.NET Core 2.0 WebAPI 跨域问题

    关于 asp.net core 2.0 webapi的跨域,我们这里使用CORS来实现,不使用旧的JSONP,可以这样配置: 打开 Startup.cs文件,转...

    徐大嘴
  • .Net Core系列教程(四)—— 基础身份认证

    在ASP.NET 4.5及之前的版本,可以使用FormsAuthenticationTicket来做基础身份认证,现在到了.Net Core中,发现原来的For...

    徐大嘴
  • .Net Core系列教程(一)——环境搭建一、目标:二、环境安装:

    微软在前些天发布了.Net Core 1.0,总算可以在我的这些Linux小鸡上跑.Net了,最近体验了下,感觉还不错,下面就以写一个网站为例,把整个的过程记录...

    徐大嘴

扫码关注云+社区

领取腾讯云代金券