10分钟读懂RealWorld:一套API测试集验收你的Medium克隆版
【免费下载链接】realworld"The mother of all demo apps" — Exemplary fullstack Medium.com clone powered by React, Angular, Node, Django, and many more项目地址: https://gitcode.com/GitHub_Trending/re/realworld
RealWorld是Medium.com克隆版背后的规格与验收测试中心,负责统一所有实现共用的API契约。读完后你能做到:对自己的后端跑一遍官方API测试套件、在本地启动文档站点、用共享E2E套件验收前端实现。
项目定位:它是什么,能干什么
这个仓库不是一个可运行的应用,而是RealWorld家族的"评分规则",主要帮你干三件事:
- 验收你的后端:基于OpenAPI契约specs/api/openapi.yml,配套Hurl测试集覆盖文章、评论、收藏、信息流、分页和错误码,全部通过即代表你的API合规。
- 验收你的前端:specs/e2e/下的共享Playwright测试套件加选择器约定SELECTORS.md,直接拷进你的工程就能用。
- 本地化官方文档:docs/目录是Astro/Starlight搭建的文档站源码,所有规范文档都能本地预览和修改。
技术栈一句话:后端用Hurl和Bruno做接口验证,前端用Playwright做端到端验证,文档用Astro。核心目录:
specs/ ├── api/ # API契约与测试集 │ ├── openapi.yml # OpenAPI契约(唯一事实来源) │ ├── hurl/ # Hurl用例(验收基准) │ └── bruno/ # 由Hurl生成的Bruno集合 └── e2e/ # Playwright E2E测试与选择器约定 docs/ # Astro文档站源码 Makefile # 统一命令入口,跑make help查看快速上手:三步跑通全流程
前置条件:本仓库统一用bun做包管理,先装好再动手。
第1步,克隆仓库:
git clone https://gitcode.com/GitHub_Trending/re/realworld cd realworld完成后在目录里执行ls,应能看到specs、docs、Makefile、CONTRIBUTING.md这几项。
第2步,启动文档站:
make documentation-setup make documentation-dev完成后浏览器里会打开一个本地Starlight站点,能浏览后端与前端的全部规范文档。
第3步,对着自己的后端跑API测试:
cd specs/api HOST=http://localhost:3000/api ./run-api-tests-hurl.sh完成后articles、auth、comments等用例应批量通过,说明你的API通过了RealWorld验收。
跑起来之后先玩什么
- 🧩先试API测试:用Bruno应用打开Bruno集合,按
articles、auth、favorites分组逐个查看请求与断言,比看YAML直观得多。 - 🔍再读契约:翻一遍specs/api/openapi.yml确认响应格式与错误码,文本文档与测试集并存时,以测试集为准。
- 🕹️然后接入你的工程:把specs/e2e/下的Playwright套件拷走,继承specs/e2e/playwright.base.ts(重写baseURL与webServer),就拿到一套现成的前端回归测试。
常见卡点速查
Bruno集合与Hurl用例不一致—— 不要手改specs/api/bruno/目录,用make bruno-check诊断、make bruno-generate重新生成。
API测试脚本整体报错—— HOST必须指向带/api后缀的已启动服务,例如HOST=http://localhost:3000/api,说明见specs/api/README.md。
文档站安装失败—— Makefile内部用的是bun而非npm,先装bun再执行make documentation-setup。
接下来看什么
- OpenAPI API契约:specs/api/openapi.yml
- Hurl API测试集(事实来源):specs/api/hurl/
- Bruno交互式测试集合:specs/api/bruno/
- Playwright E2E前端测试集:specs/e2e/
- 贡献指南:CONTRIBUTING.md
契约和测试集都拿在手里了,去写你自己的RealWorld实现吧。
【免费下载链接】realworld"The mother of all demo apps" — Exemplary fullstack Medium.com clone powered by React, Angular, Node, Django, and many more项目地址: https://gitcode.com/GitHub_Trending/re/realworld
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考