例如我们在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单元测试写法相关推荐

  1. SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例

     要搭建的项目的项目结构如下(使用的框架为:Spring.SpingMVC.MyBatis): 2.pom.xml中的配置如下(注意,本工程分为几个小的子工程,另外两个工程最终是jar包): 其中 ...

  2. Dynamics CRM2016 Web API之创建记录

    前篇介绍了通过primary key来查询记录,那query的知识点里面还有很多需要学习的,这个有待后面挖掘,本篇来简单介绍下用web api的创建记录. 直接上代码,这里的entity的属性我列了几 ...

  3. 从头编写 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部分 ...

  4. 【翻译】ASP.NET WEB API异常处理

    当一个web api抛出一个异常后 此异常会被转化成一个HTTP响应 错误代码为500的服务错误 但是如果你不想让客户端看到500的错误码 你也可以自定义错误码 如下代码当用户输入的ID没有与之相关的 ...

  5. 如何测试ASP.NET Core Web API

    在本文中,我们将研究如何测试你的ASP .NET Core 2.0 Web API解决方案.我们将了解使用单元测试进行内部测试,使用全新的ASP .NET Core的集成测试框架来进行外部测试. 本文 ...

  6. 元数据驱动设计 —— 为动态移动应用创建Web API

    时间回到多年之前(当时我的头发还没这么稀疏),Google在4月1日这一天发布了Gmail,这不由得令许多人怀疑这个产品是否只是Google精心炮制的一个玩笑.但谁又能够去指责他们的怀疑呢?毕竟整个互 ...

  7. 针对ASP.NET Core Web API的先进架构

    \ 本点要点 \\ 与传统的ASP.NET相比,ASP.NET Core的新架构提供了一些好处\\t ASP.NET Core从一开始就包含对依赖注入的支持\\t 单一职责原则简化了实施和设计.\\t ...

  8. 在ASP.NET Web API中使用OData的Action和Function

    本篇体验OData的Action和Function功能.上下文信息参考"ASP.NET Web API基于OData的增删改查,以及处理实体间关系".在本文之前,我存在的疑惑包括: ...

  9. 用ASP.NET Web API技术开发HTTP接口(一)

    <转载自 "浮点指向"> 启动Visual Studio 2015,新建一个ASP.NET Web应用程序,命名为SimpleAPI.选择Empty模板,并勾选&quo ...

最新文章

  1. 第一篇博客,java学生管理系统(挑战全网最全)
  2. [转载]《吴恩达深度学习核心笔记》发布,黄海广博士整理!
  3. linux c语言 malloc动态分配指针,C语言malloc函数为一维,二维,三维数组分配空间...
  4. React Native StyleSheet 样式属性
  5. react下移动端可吸附悬浮窗按钮,支持拖动拖拽功能
  6. LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)
  7. vconfig命令打通直连网络
  8. 将java编译成so库_利用android studio 生成 JNI需要的动态库so文件
  9. 判断变量是空_python基础(二):变量的数据类型、常量、操作符、分支、循环、条件判断...
  10. Jspxcms 9.5.0 发布,Java CMS
  11. Java的下载与安装简易教程
  12. 阿里巴巴Java性能调优实战(2021华山版)
  13. 【知识总结】情感分类
  14. c++学习笔记-------《c++自学通》第六章 基本类
  15. 【历史上的今天】1 月 23 日:现代集成电路雏形;JDK 1.0 发布;数学大师诞生
  16. linux 网速限制
  17. 微信小程序导入Bmob后端云的步骤
  18. 【编程实践】Raft 算法的原理 go代码实例
  19. LBS学习相关网址(Jonathan Raper教授整理)
  20. JavaScript : 对LHS和RHS两个名词的理解

热门文章

  1. 情人节 html5,情人节H5案例 | 2019第一波情人节营销已上线
  2. Mysql常用词汇_mysql 数据库常用单词
  3. Java学习总结:6
  4. Java项目:宠物医院预约挂号系统(java+JSP+Spring+SpringBoot+MyBatis+html+layui+maven+Mysql)
  5. java mongodb存base64_阿里JAVA面试分享经验【文末有福利】
  6. 数据结构课程上机参考代码
  7. swift 和 oc中检测textfield是否输入数字
  8. 【UIDynamic例子】挂起的方块
  9. 教你实现GPUImage【OpenGL渲染原理】
  10. ZKFC服务异常:Parent znode does not exist.