Web Api单元测试写法
例如我们在Web Api项目中有个Controller
public class SomeController : ApiController
{
public HttpResponseMessage Get()
{
// 一些操作
return Request.CreateResponse(HttpStatusCode.OK, someModel);
}
}
如果你在单元测试中直接调用 SomeController 的Get()方法,那么你将会收到一个Exception提示Request为Null。
因此我们需要在测试代码中构造一个Request,有两种方法
1、简单构造法
[TestMethod]
public void UnitTestMethod()
{
// 环境准备部分
YourNameSpace.Controllers.SomeController controller = new SomeController();
// 下面两个语句是构造一个简单的请求报文
controller.Request = new HttpRequestMessage();
controller.Request.SetConfiguration(new HttpConfiguration());
var result = controller.Get();
// 断言
}
2、可控性更强的构造
[TestMethod]
public void UnitTestMethod()
{
// 环境准备部分
YourNameSpace.Controllers.SomeController controller = new SomeController();
var config = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Post, "YourUrl");
var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "products" } });
controller.ControllerContext = new HttpControllerContext(config, routeData, request);
controller.Request = request;
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;
var result = controller.Get();
// 断言
}
然后就可以运行单元测试查看结果了。
Web Api单元测试写法相关推荐
- SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例
要搭建的项目的项目结构如下(使用的框架为:Spring.SpingMVC.MyBatis): 2.pom.xml中的配置如下(注意,本工程分为几个小的子工程,另外两个工程最终是jar包): 其中 ...
- Dynamics CRM2016 Web API之创建记录
前篇介绍了通过primary key来查询记录,那query的知识点里面还有很多需要学习的,这个有待后面挖掘,本篇来简单介绍下用web api的创建记录. 直接上代码,这里的entity的属性我列了几 ...
- 从头编写 asp.net core 2.0 web api 基础框架 (5) EF CRUD
第1部分:http://www.cnblogs.com/cgzl/p/7637250.html 第2部分:http://www.cnblogs.com/cgzl/p/7640077.html 第3部分 ...
- 【翻译】ASP.NET WEB API异常处理
当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...
- 如何测试ASP.NET Core Web API
在本文中,我们将研究如何测试你的ASP .NET Core 2.0 Web API解决方案.我们将了解使用单元测试进行内部测试,使用全新的ASP .NET Core的集成测试框架来进行外部测试. 本文 ...
- 元数据驱动设计 —— 为动态移动应用创建Web API
时间回到多年之前(当时我的头发还没这么稀疏),Google在4月1日这一天发布了Gmail,这不由得令许多人怀疑这个产品是否只是Google精心炮制的一个玩笑.但谁又能够去指责他们的怀疑呢?毕竟整个互 ...
- 针对ASP.NET Core Web API的先进架构
\ 本点要点 \\ 与传统的ASP.NET相比,ASP.NET Core的新架构提供了一些好处\\t ASP.NET Core从一开始就包含对依赖注入的支持\\t 单一职责原则简化了实施和设计.\\t ...
- 在ASP.NET Web API中使用OData的Action和Function
本篇体验OData的Action和Function功能.上下文信息参考"ASP.NET Web API基于OData的增删改查,以及处理实体间关系".在本文之前,我存在的疑惑包括: ...
- 用ASP.NET Web API技术开发HTTP接口(一)
<转载自 "浮点指向"> 启动Visual Studio 2015,新建一个ASP.NET Web应用程序,命名为SimpleAPI.选择Empty模板,并勾选&quo ...
最新文章
- 第一篇博客,java学生管理系统(挑战全网最全)
- [转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!
- linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...
- React Native StyleSheet 样式属性
- react下移动端可吸附悬浮窗按钮,支持拖动拖拽功能
- LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)
- vconfig命令打通直连网络
- 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件
- 判断变量是空_python基础(二):变量的数据类型、常量、操作符、分支、循环、条件判断...
- Jspxcms 9.5.0 发布,Java CMS
- Java的下载与安装简易教程
- 阿里巴巴Java性能调优实战(2021华山版)
- 【知识总结】情感分类
- c++学习笔记-------《c++自学通》第六章 基本类
- 【历史上的今天】1 月 23 日:现代集成电路雏形;JDK 1.0 发布;数学大师诞生
- linux 网速限制
- 微信小程序导入Bmob后端云的步骤
- 【编程实践】Raft 算法的原理 go代码实例
- LBS学习相关网址(Jonathan Raper教授整理)
- JavaScript : 对LHS和RHS两个名词的理解
热门文章
- 情人节 html5,情人节H5案例 | 2019第一波情人节营销已上线
- Mysql常用词汇_mysql 数据库常用单词
- Java学习总结:6
- Java项目:宠物医院预约挂号系统(java+JSP+Spring+SpringBoot+MyBatis+html+layui+maven+Mysql)
- java mongodb存base64_阿里JAVA面试分享经验【文末有福利】
- 数据结构课程上机参考代码
- swift 和 oc中检测textfield是否输入数字
- 【UIDynamic例子】挂起的方块
- 教你实现GPUImage【OpenGL渲染原理】
- ZKFC服务异常:Parent znode does not exist.