
node-blog自动化测试入门Jest supertest从0到1实战【免费下载链接】node-blog:rocket:《Node.js从入门到上线》A blog build with Koa2.项目地址: https://gitcode.com/gh_mirrors/node/node-blognode-blog 是一个基于 Koa2 与 MongoDB 搭建的开源博客系统随着用户注册、文章管理、评论、分类等功能越来越多手动回归测试的成本也在不断上升。本文就带你从 0 到 1 为 node-blog 搭建一套自动化测试使用 Jest 编写测试用例配合 supertest 模拟 HTTP 请求不用打开浏览器就能验证每个页面是否正常返回。读完你会发现给 Node.js 项目补上自动化测试比想象中简单得多。为什么说自动化测试是博客项目的安全带 ️项目功能一多每次改完代码都要手动点一遍首页、文章详情、登录、注册、404……漏掉任何一个都可能把 bug 带上线。自动化测试的价值就在于此回归无忧改完代码跑一遍测试几分钟就能确认没改坏旧功能快速反馈supertest 直接发 HTTP 请求比打开浏览器快一个数量级文档即测试测试用例本身就在描述页面应该返回什么状态码。认识两位主角Jest 与 supertest 工具角色通俗理解Jest测试运行器 断言库像裁判负责执行用例并判定结果supertestHTTP 请求模拟器像你的手直接向 Koa 应用发请求Jest 负责组织用例、断言expect(res.status).toEqual(200)这类结果supertest 负责把请求打到你的 Koa 应用上。两者搭配是目前 Node.js 服务端测试最流行的组合之一。最快配置方法依赖早已备好 打开项目的 package.json 你会发现测试依赖早就配置好了开发依赖中包含jest: ^23.1.0与supertest: ^3.1.0scripts中已有现成的测试命令test: jest --forceExit。所以你只需要执行一次安装npm install就可以开始写测试了无需任何额外配置这就是 Koa2 项目测试上手最快的方式。读懂 node-blog 现有的测试文件 项目里已经有一个现成的测试文件 test/page.test.js一共才十几行却是理解整个测试流程的最佳入口const app require(../index) const server app.listen() const request require(supertest).agent(server) afterEach(() { server.close() }) test(should GET /, async () { const res await request.get(/) expect(res.status).toEqual(200) })这段代码里有三个关键点测试入口require(../index)直接拿到 Koa 应用实例而不是启动一个独立进程核心设计在 index.js 中应用通过const app module.exports new Koa()导出并用if (!module.parent) app.listen(...)判断——被测试引入时不会自动监听端口由测试自己app.listen()这正是 node-blog 为测试做的贴心设计干净收尾afterEach里server.close()关闭服务避免端口占用和资源泄漏。运行你的第一个自动化测试 ✅直接在项目根目录执行npm test看到类似Tests: 2 passed的输出说明首页/和关于页/about两个用例全部通过。命令末尾的--forceExit也很有讲究由于项目连接了 MongoDB见 config/config.js测试进程可能因事件循环未清空而无法自动退出加上它就能确保跑完立即结束。实战扩展给更多页面写测试用例 掌握了套路扩展用例就水到渠成了。访问一个不存在的路由node-blog 会在 routes/index.js 的统一 404 处理中渲染出专门的错误页面登录页也有对应路由用户认证相关页面同样可以纳入测试范围给测试文件追加几个用例非常直观test(should GET /signin, async () { const res await request.get(/signin) expect(res.status).toEqual(200) }) test(should 404 on unknown route, async () { const res await request.get(/no-such-page) expect(res.status).toEqual(404) })注意/posts/new、/category等页面在 routes/index.js 中受登录态和权限中间件保护未登录访问会被重定向——这正好可以测试未登录跳转登录页的行为断言res.status为 302 即可。进阶方向登录态、数据库与持续集成 登录态测试supertest 的agent会自动保存 Cookie先 POST 登录再访问受保护页面就能模拟完整用户流程数据库隔离测试用例尽量使用独立测试库避免污染 config/config.js 中配置的开发数据持续集成把npm test挂到 CI 流水线再配合项目已配置的huskylint-staged在提交前自动检查质量和效率兼得。总结 从理解 test/page.test.js 的十几行代码开始到跑通npm test再到自己扩展 404、登录等用例——node-blog 的自动化测试就是这样从 0 到 1 建立起来的。Jest supertest 的组合轻量、直观非常适合作为 Node.js 后端自动化测试的入门首选。快去给你的博客项目也加上这道安全带吧【免费下载链接】node-blog:rocket:《Node.js从入门到上线》A blog build with Koa2.项目地址: https://gitcode.com/gh_mirrors/node/node-blog创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考