我正在测试一个用于进行Web API 调用的服务的方法 . 如果我还在本地运行Web服务(位于解决方案中的另一个项目中),则使用普通 HttpClient 可以正常进行单元测试 .

但是,当我签入我的更改时,构建服务器将无法访问Web服务,因此测试将失败 .

我通过创建一个 IHttpClient 接口并实现我在我的应用程序中使用的版本,为我的单元测试设计了一种方法 . 对于单元测试,我使用模拟的异步post方法创建一个模拟版本 . 这是我遇到问题的地方 . 我想为这个特定的测试返回一个OK HttpStatusResult . 对于另一个类似的测试,我将返回一个糟糕的结果 .

测试将运行但永远不会完成 . 它挂在等待 . 我是异步编程,代表和Moq本身的新手,我一直在搜索SO和google一段时间学习新东西,但我似乎仍然无法解决这个问题 .

这是我试图测试的方法:

public async Task QueueNotificationAsync(IHttpClient client, Email email)

{

// do stuff

try

{

// The test hangs here, never returning

HttpResponseMessage response = await client.PostAsync(uri, content);

// more logic here

}

// more stuff

}

这是我的单元测试方法:

[TestMethod]

public async Task QueueNotificationAsync_Completes_With_ValidEmail()

{

Email email = new Email()

{

FromAddress = "bob@example.com",

ToAddress = "bill@example.com",

CCAddress = "brian@example.com",

BCCAddress = "ben@example.com",

Subject = "Hello",

Body = "Hello World."

};

var mockClient = new Mock();

mockClient.Setup(c => c.PostAsync(

It.IsAny(),

It.IsAny()

)).Returns(() => new Task(() => new HttpResponseMessage(System.Net.HttpStatusCode.OK)));

bool result = await _notificationRequestService.QueueNotificationAsync(mockClient.Object, email);

Assert.IsTrue(result, "Queue failed.");

}

我究竟做错了什么?

谢谢您的帮助 .

java 单元测试 异步_使用Moq模拟单元测试的异步方法相关推荐

  1. 单元测试编写_编写详尽的单元测试

    单元测试编写 As software developers we all know how important it is to unit test the code that we write. S ...

  2. 单元测试编写_为什么要编写单元测试-测试技巧8

    单元测试编写 我对最近的博客"您应该测试什么"有很多React,有些人出于各种原因与我达成一致,另一些人则认为建议某些类可能不需要单元测试是完全危险的. 已经处理了什么测试,今天的 ...

  3. java单元测试内存数据库_基于内存数据库的单元测试

    背景: 当我们在进行单元测试时,对于关系型数据库(例如mysql)和非关系型数据库(例如redis)的处理,有的小伙伴通过mock的方式制作出假的数据进行测试,有的小伙伴会连到开发环境操作数据库.而连 ...

  4. java event 异步_[转]java异步编程

    很多时候我们都希望能够最大的利用资源,比如在进行IO操作的时候尽可能的避免同步阻塞的等待,因为这会浪费CPU的资源.如果在有可读的数据的时候能够通知程序执行读操作甚至由操作系统内核帮助我们完成数据的拷 ...

  5. java servlet异步_厉害了,Servlet3的异步处理机制

    Servlet3发布好几年了,又有多少人知道它的新特性呢?下面简单介绍下. 主要增加了以下特性: 1.异步处理支持 2.可插性支持 3.注解支持,零配置,可不用配置web.xml ... 异步处理是什 ...

  6. 可以进行单元测试么_大量实例助攻,让你的单元测试更高效

    关注[搜狐技术产品]公众号,第一时间获取技术干货 导读 单元测试作为程序员的必修课,对代码的稳定性起着关键性的作用,但是你真的会写单元测试么?什么才算是真正的单元测试?这些疑问你都将在文章中得到解答. ...

  7. 转使用Moq让单元测试变得更简单

    [ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...

  8. pycharm appiunm 公众号测试_知道答案公众号_知到APP笔尖上的艺术——书法基础与赏析单元测试答案_知道答...

    知道答案公众号_知到APP笔尖上的艺术--书法基础与赏析单元测试答案_知道答案公众号 更多相关问题 按下图装置,持续通入X气体,可以看到a处有红色物质生成,b处变蓝,c处得到液体,则X气体可能是[ ] ...

  9. 熟读《阿里巴巴java开发手册》(三、单元测试,四、安全规约)

    目录 三.单元测试 四.安全规约 三.单元测试 1. [强制] 好的单元测试必须遵守 AIR 原则. 说明: 单元测试在线上运行时,感觉像空气( AIR)一样并不存在,但在测试质量的保障上,却是非常关 ...

最新文章

  1. 【OpenCV的C++教程2】加载、修改、保存图像
  2. 手机版html页面左右滑动切换页面,移动端手指左右滑动切换内容demo
  3. 2014广州赛区比赛总结
  4. linux7自带haprox版本,CentOS7.4—构建最新版haproxy高可用群集
  5. C++中函数重载、缺省参数及命名空间
  6. 你们都会的防抖与节流
  7. 仿王者荣耀HTML示例代码
  8. mysql 过滤微信昵称表情符号_js 过滤微信昵称的表情符号
  9. 计算机网络——局域网
  10. cairo裁剪使用分析
  11. 无法启动此程序,因为计算机中丢失pthreadVC2.dll
  12. 1000多万淘宝卖家及23万天猫卖家,开始构建私域流量时代!
  13. c++中sprintf和sprintf_s的区别
  14. 前端 img标签显示 base64格式的 图片
  15. endata 电影票房响应数据破解
  16. 发现一本自学单片机很好的书,推荐一下 王云51单片机C语言教程
  17. 天眼和计算机科学相关吗,中国天眼重要成果发布,两篇Nature都与它有关
  18. 毕业设计-基于大数据技术的旅游推荐系统-python
  19. ntohl()头文件
  20. 用docker弹性部署自己的服务

热门文章

  1. keil在线调试技巧
  2. android4.4 恢复出厂设置,Android4.4.2恢复出厂设置(三)
  3. win10开启wifi热点
  4. 流体力学(水力学)满分实验报告——动量定律
  5. 总结从T5、GPT-3、Chinchilla、PaLM、LLaMA、Alpaca等近30个最新模型
  6. 无法将“babel”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
  7. Java标识符和键盘录入
  8. Windows下dump文件的生成
  9. 如何引入先验知识——Embedding Symbolic Knowledge into Deep Networks——纯属个人思考,极有可能出错,自行取用
  10. 计算机二级考试太难?努力也拿不到证?