如何编写干净流畅的Web API测试

前言

当我们为Web API编写测试用例时,代码基本是这样的:

public class UnitTest1
{private readonly TestServer _server;private readonly HttpClient _client;public UnitTest1(){// Arrange_server = new TestServer(new WebHostBuilder().UseStartup<Startup>());_client = _server.CreateClient();}[Fact]public async Task Test1(){// Actvar response = await _client.GetAsync("/WeatherForecast");response.EnsureSuccessStatusCode();var responseString = await response.Content.ReadAsStringAsync();var actual = Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<WeatherForecast>>(responseString);// AssertAssert.Equal(5, actual.Count());}
}

我们需要获得HttpResponseMessage response,检查它的StatusCode,如果要对响应内容进行断言,还需要对其反序列化。

这样的问题是,测试用例中的大量代码都是和测试本身无关的,而且用例一多,还会形成大量重复性的代码。

这时,可以试试FluentAssertions.Web,它为HttpResponseMessage提供了大量扩展方法,用于单元测试中的断言。

Demo

1.断言

将上面的测试用例改用FluentAssertions.Web,代码如下:

[Fact]
public async Task Test1()
{// Actvar response = await _client.GetAsync("/WeatherForecast");// Assertresponse.Should().Be200Ok().And.Satisfy<IEnumerable<WeatherForecast>>(model =>{model.Should().HaveCount(5);});
}

现在,断言是不是看起来更自然流畅!

2.失败原因

我们修改代码,仅返回1条数据,使得测试失败:

ef482bc332b5ef3ea4a752947dc3af33.png

可以看到,失败原因返回了详细的诊断信息,我们无需再像以前那样,还需要调试代码,检测错误原因了。

结论

使用FluentAssertions.Web,不仅可以编写干净流畅的Web API测试,还可以从断言的失败原因中提取足够的信息,从而减少调试时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296113.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SFB2015 多SIP域

SFB2015 多SIP域最近公司有打算要安装最新的SFB2015作为一个SFB小白 在通读了官方安装文章之后竟然磕磕绊绊的安装成功&#xff0c;客户端登录也是成功的&#xff0c;下面就有一个十分蛋疼的问题 公司内外网域名不一致虽然在进行拓扑准备的时候进行了多SIP域的准备&#xff0c;…

中国25个最“吓人”地名,看完都被吓笑了!

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;中学地理课中国人起名字&#xff0c;是很有讲究的。不管是起人名&#xff0c;还是起地名&#xff0c;和作诗差不多&#xff0c;都是在营造一个意境。就拿北京来说吧&#xff0c;比如颐和园&#xff0c;听着端庄&#xff…

C# 显式接口成员实现

如果类实现两个接口&#xff0c;并且这两个接口包含具有相同签名的成员&#xff0c;那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。然而&#xff0c;如果两个接口成员实现不同的功能&#xff0c;则可能会导致其中一个接口的实现不正确或两个接口的实现都不正…

没有数学天赋是一种什么体验?

全世界只有3.14 % 的人关注了爆炸吧知识虽然我不懂但我热爱数学♪没有数学天赋是一种什么体验&#xff1f;1 看不懂懵逼矩阵2 小学数学不及格&#xff0c;找了个纹身店&#xff0c;问老板纹个九九乘法口诀多少钱。老板说了一个价钱&#xff0c;后来因算不出要存多少天早餐钱而作…

20151026c#2

变量是内存里存储的&#xff0c;运行在cpu里的。 数据类型 值类型&#xff1a;所有的数值类型都是值类型&#xff08;short int long float double、bool)、枚举、结构 引用类型&#xff1a;对象、字符串、object、数组 区别&#xff1a; 1、值类型 class Program{static void …

一个常见的物理现象,直今还是未解之谜!

全世界只有3.14 % 的人关注了爆炸吧知识在我们的日常生活中存在着很多有趣的物理现象&#xff0c; 科学家对这些现象进行深入研究后&#xff0c;可以通过这些现象延伸&#xff0c;从而在前沿科技发展上得到很大的帮助&#xff0c;甚至去解决宇宙中出现的难题。但是在日常生活中…

SegmentFault 创始人祁宁对话 C# 之父 Anders Hejlsberg

导读 上周&#xff0c;C#、Delphi 之父 Anders Hejlsberg 亲临帝都&#xff0c;就 TypeScript 做了一场技术分享&#xff0c;并与众多开发者就此进行了技术探讨。Anders Hejlsberg 加入微软的 19 年里&#xff0c;一直致力于 C# 和 .NET 的研发工作。同时&#xff0c;作为 Type…

JS:1.3,函数(function)

ylbtech-JS&#xff1a;函数-导航函数定义返回函数调用一个函数调用一个函数(带参数)返回值的函数调用外部的js文件JS&#xff1a;3.1&#xff0c;函数(function)-定义 返回顶部1&#xff0c;定义函数语法 通过定义函数名称&#xff0c;参数和代码语句来创建函数。function 函数…

美女,你这是把腰带当裙子了?

1 你这是把腰带当裙子了&#xff1f;&#xff08;良心建议&#xff1a;穿这裙子一定要专心...&#xff09;▼2 真正充满味道的食堂&#xff01;▼3 &#xff1f;&#xff1f;&#xff1f;这又是一只有故事的猫▼4 女生的肚子可以多神奇&#xff1f;&#xff08;dy&#xff…

UITableView定制accessoryView出现的连带问题

为了美化UI,想实现如下图的效果:点击高亮 出发点是好的。没想到&#xff0c;出现了下图的连带问题:选择一行的时候&#xff0c;竟然连带的出现了高亮效果 这个如何是好&#xff1f;经过网络搜索&#xff0c;发现我不是第一个遇到这样的问题&#xff1a;custom-accessory-button…

Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板

图片在我以前的文章&#xff08;这里是第一[1]篇和第二篇[2]&#xff09;中&#xff0c;我展示了ElasticSearch作为电子商务中的全文搜索引擎的使用&#xff0c;一些高级配置的设置和使用以及products包含所有内容的索引的创建保存的产品。出于演示目的&#xff0c;我们使用Bog…

男女共厕,考验男生心理素质的时候到了......

1 假期里你都干了啥&#xff1f;▼2 有猫饼▼3 奥特曼&#xff1a;我不会错过&#xff01;▼4 自绝式单身▼5 我信了▼6 意外的惊喜▼7 画面太美我不敢看▼你点的每个赞&#xff0c;我都认真当成了喜欢

基于MySQL的高可用可扩展架构探讨

随着信息量飞涨&#xff0c;信息的存储成为了这个时代至关重要的一项技术。如何来保证数据存储技术能够适应信息量的增长速度和我们对信息的高度依赖&#xff0c;成为一个非常重要的课题。本文将从数据库架构的层面&#xff0c;通过以开源的数据存储软件来构建分布式数据层的思…

有趣分享:国内产业图谱

IT有趣分享”Microsoft 市值又重新登上全球第一当地时间21年10月29号周五美股收盘微软市值重新登上全球第一&#xff0c;约为2.46万亿美元&#xff0c;超越苹果2.43万亿美元&#xff0c;成为全球市值第一公司。相当于深圳21年前三季度的gdp的总和的两倍。有趣的是专门有人做了公…

性冷淡风的麻将,获红点奖!网友:没有烟火气了

全世界只有3.14 % 的人关注了爆炸吧知识在这个消费升级的时代很多产品都被重新设计着最近&#xff0c;一款麻将引发大家热议有人说惊艳也有人说太冰冷&#xff0c;没了烟火气设计者是THE 90s LAB台湾的一个90后团队这副麻将的名字很洋气叫做&#xff0c;马丘Machill读起来&…

c语言md5函数 linux,Linux下C语言计算文件的md5值(长度32)

google了好久都没有找到合适的&#xff0c;其实我只需要一个函数&#xff0c;能计算文件的 md5 值就好&#xff0c;后来找到了 md5.h 和 md5.c 的源文件&#xff0c;仿照别人的封装了个函数(他那个有问题&#xff0c;和 md5sum 计算出来的都不一样)。废话少说&#xff0c;直接贴…

图片的旋转

主要运用了Matrix类&#xff0c;postRotate()方法和postScale()方法&#xff1b; Matrix&#xff1a;中文是矩阵的意思&#xff0c;主要用于图片的缩放&#xff0c;平移与旋转&#xff1b; postRotate()用于旋转&#xff0c;postScale()用于缩放&#xff1b; 具体MianAvtivity代…

让 AI 为你写代码 - 体验 Github Copilot

前几天在群里看到有大神分享 Copoilot AI 写代码&#xff0c;看了几个截图有点不敢相信自己的眼睛。今天赶紧自己也来体验一下 Copoilot AI 写代码到底有多神奇。申请 现在 Copoilot 还处在预览阶段&#xff0c;想要体验需要先申请。等待大概一晚会收到邮件提示申请试用成功&am…

这个24岁北航博士刚毕业就受聘211大学副教授,他大一就保研,学术能力太牛了.........

全世界只有3.14 % 的人关注了爆炸吧知识本文综合整理自&#xff1a;量子位、微言航语近日&#xff0c;有一个人的“朋友圈”在朋友圈火了。别误会&#xff0c;超模君可没在玩套娃游戏。截图给大家搬来了&#xff0c;快看你没看错&#xff01;1996年出生&#xff0c;今年24岁&am…

英特尔傲腾内存linux,英特尔傲腾内存怎么样?intel傲腾内存优点和缺点你知道吗?...

英特尔傲腾内存在前一段时间正是发布&#xff0c;对于英特尔内存的性能不少用户一无所知&#xff0c;那么英特尔傲腾内存怎么样&#xff1f;都有哪些优点和缺点&#xff1f;下面装机之家小编来为大家解读下。优点1&#xff1a;3D XPoint随机读取性能强傲腾使用了不同于普通固态…