今儿给大家分享下,在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 == )
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 > , true);
}
}
}

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

使用TestServer测试ASP.NET Core API的更多相关文章

  1. 测试 ASP.NET Core API Controller

    本文需要您了解ASP.NET Core MVC/Web API, xUnit以及Moq相关知识. 这里有xUnit和Moq的介绍: https://www.cnblogs.com/cgzl/p/917 ...

  2. ASP.NET Core API 接收参数去掉烦人的 [FromBody]

    在测试ASP.NET Core API 项目的时候,发现后台接口参数为类型对象,对于PostMan和Ajax的Post方法传Json数据都获取不到相应的值,后来在类型参数前面加了一个[FromBody ...

  3. ASP.NET CORE API Swagger+IdentityServer4授权验证

    简介 本来不想写这篇博文,但在网上找到的文章博客都没有完整配置信息,所以这里记录下. 不了解IdentityServer4的可以看看我之前写的入门博文 Swagger 官方演示地址 源码地址 配置Id ...

  4. 使用 SoapUI 测试ASP.NET Web API

    我们为不同的目的开发了很多web服务,经过授权的用户就可以访问和使用这些web服务.soapUI 是一个强大的测试web服务的工具,他不仅可以测试SOAP服务,他也支持测试RESTful服务.在这里我 ...

  5. 详解ASP.NET Core API 的Get和Post请求使用方式

    上一篇文章帮助大家解决问题不彻底导致博友使用的时候还是遇到一些问题,欢迎一起讨论.所以下面重点详细讲解我们常用的Get和Post请求( 以.net core2.2的Http[Verb]为方向 ,推荐该 ...

  6. ASP.NET Core API ——Dapper的使用

    ASP.NET Core API ——Dapper的使用 简介:Dapper是一个ORM框架,负责数据库和程序语言之间的映射. 使用步骤: l  创建一个IDBConnection的接口对象 l  编 ...

  7. ASP.NET Core API总结(一)

    ASP.NET Core API 问题:当应用收到一个http请求之后,API应用程序是怎么一步步执行的. 注册服务——构造容器——使用服务——创建对象 1.         创建一个新的API之后, ...

  8. 使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目

    今天,Visual Studio中没有内置工具来测试WEB API.使用浏览器,只能测试http GET请求.您需要使用Postman,SoapUI,Fiddler或Swagger等第三方工具来执行W ...

  9. Asp .net core api+Entity Framework 实现数据的存取到数据库中

    最近在学dotNetCore 所以尝试了一下api 这个功能 不多说了大致实现如下 1.用vs2017建立一个Asp.net  Core Web 应用程序 在弹出的对话框中选择 Web API 项目名 ...

随机推荐

  1. new sh file

    创建新文件 sbash='#!/bin/bash' sauth='# auth: xiluhua' sdate="# date: $(date +%Y-%m-%d)" shead= ...

  2. Java volatile详解

    转自:http://www.cnblogs.com/dolphin0520/p/3920373.html volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受 ...

  3. isIos

    function IsIOS() { if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { return true } else { r ...

  4. 蓝牙Profile的概念和常见种类(转)

    蓝牙Profile Bluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范.为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规 ...

  5. nginx FastCGI错误Primary script unknown解决办法

    在centos上成功编译安装nginx 1.4.php 5.4并成功启动nginx和php-fpm后,访问php提示"File not found.",同时在错误日志中看到: 复制 ...

  6. element ui里dialog关闭后清除验证条件

    //vue <!--添加用户dialog begin--> <el-dialog title="编辑用户" :visible.sync="dialogF ...

  7. centos6使用yum安装python3和pip3

    在安装了epel源的情况下,直接yum就可以安装python3.4 #yum install python34 -y# python3 --versionPython 3.4.5 没有自带pip3,需 ...

  8. Lonsdor K518ISE free update news on what makes and year can work

    Lonsdor K518ISE engineers recently tested a number of cars and verified working great, below are tes ...

  9. hibernate自动创建表报表不存在

    在hibernate.cfg.xml配置了<property name="hibernate.hbm2ddl.auto">update</property> ...

  10. ltp-fcntl36 偶尔出现fail unexpected data offset 20928 value 94

    每次出错的都是和posix相关先把结论说了: fn_ofd_w和fn_ofd_r的SAFE_FCNTL参数F_OFD_SETLKW fn_posix_w和fn_posix_r的SAFE_FCNTL参数 ...