• 首页
  • 博客
  • 项目
  • 留言墙
  • 工具集

动态更新

喜欢我的内容的话不妨订阅支持一下 🫶
加入其他 2 位订阅者,每月一封,随时可以取消订阅。

© 2025 Koya. 网站已开源:GitHub   Fork CaliCastle

首页博客项目留言墙工具集
总浏览量 4.3万
最近访客来自 AR🇦🇷
  • 简介
  • F.I.R.S.T 原则
  • 编写单元测试
  • 参考资料
在 Node.js 中为 Restful API 编写单元测试
2017-05-10 18:59:00nodejs, 技术

在 Node.js 中为 Restful API 编写单元测试

在node中写API的单元测试吧

245次点击4分钟阅读

简介

单元测试是针对程序模块来进行正确性检验的测试工作 程序单元是应用的最小可测试部件。

在 Web 应用中,我们可以把 Restful API 看作是构成应用的单元。 Restful API 比较好测试,测试起来也比较简单。

最近想做一个短视频分享类的网站,因为市面上看到的短视频网站不管是页面还是功能,目前也只有大疆的天空之城的垂直型看起来不错,所以萌生了一个做短视频网站的想法

因为觉得这个网站做好之后需要长期维护,所以觉得最好的办法就是添加单元测试

F.I.R.S.T 原则

当我们决定要编写单元测试之后,我们就要考虑怎样 写好 单元测试,换句话说就是编写单元测试时需要注意哪些原则。 那么,有哪些原则是我们需要注意的呢?

  • Fast: 测试必须是快速的
  • Isolated / Independent:
    • 每个测试都要做 3 A => Arrange(准备), Act(行动), Assert(断言)
    • Arrange: 测试过程中用到的数据不能依赖于运行环境,测试中用到的数据应是测试中的一部分
    • Act: 调用你想要测试的方法 / API
    • Assert: 根据返回结果进行断言
    • 测试结果不能依赖运行环境
    • 测试结果不依赖运行测试的顺序
  • Repeatable:
    • 每个测试必须是可重复执行的,即运行 N 次,会得到 N 次相同的结果
    • 每个测试的结果不应依赖时间,日期,和随机数的输出
  • Self-validating:
    • 每个测试都可以自己判断结果来判断测试是否通过
    • 不需要人类去查阅手册来判断结果
  • Thorough and Timely:
    • 应该尽量覆盖所有使用场景
    • 应该尝试测试驱动开发(TDD)

这就是经典的 F.I.R.S.T 原则。 我们最好时刻注意自己编写的单元测试是否遵守这些原则。

JavaScript 社区里有很多测试框架可以用来编写单元测试,有 ava、mocha、jasmine、tap 等。 这些测试框架都有提供 beforeEach、afterEach API,目的是隔离我们的测试数据,从而满足 Isolated / Independent 和 Repeatable 原则。

编写单元测试

基本流程:

  • 为 app 创建 http 服务器
  • 对各个 API 发出请求
  • 对响应内容进行断言

使用工具:

  • supertest
  • mocha
  • should.js


代码:


为 Restful API 编写单元测试还有一个优点,就是可以轻易区分登录状态和非登录状态。

如果要在用户界面中测试这些功能,那么就需要不停地登录和注销,将会是一项累人的工作~

参考资料

  • https://zh.wikipedia.org/zh-cn/单元测试 http://blog.hubstaff.com/why-you-should-write-unit-tests/ 
  • https://github.com/ghsukumar/SFDC_Best_Practices/wiki/F.I.R.S.T-Principles-of-Unit-Testing
  •  https://www.zhihu.com/question/28729261/answer/94964928 https://yq.aliyun.com/articles/57804 
  • https://scarletsky.github.io/2016/10/05/write-unit-tests-for-restful-api-in-nodejs/


相关文章

解锁DeepSeek-R1满血性能-AI 代码助手接入攻略

2025-02-18 15:47:01AI, 技术2038分钟阅读

使用 webworker 计算文件 MD5 和获取图片元数据

2024-12-25 15:35:18技术3284分钟阅读

How To Fix - CORS Error while uploading files on Cloudflare R2 using presigned URLs.

2024-06-05 16:34:55技术1,6771分钟阅读