Puffing-Billy:Ruby 浏览器测试中的网络请求模拟利器
Puffing-Billy:Ruby 浏览器测试中的网络请求模拟利器
puffing-billy 是一个专为 Ruby 测试环境设计的 HTTP 代理工具,主要用于在 浏览器自动化测试(如 Capybara + Selenium)中拦截和模拟网络请求。它通过代理方式工作,允许开发者动态修改请求/响应,无需依赖外部服务或修改生产代码,是测试复杂前端交互(如 API 调用、静态资源加载)的理想选择。
核心功能与优势
请求拦截与重定向
拦截所有通过代理的 HTTP/HTTPS 请求,支持基于 URL、方法(GET/POST)、请求头等条件匹配。
可返回预定义的响应(如 JSON、),或从文件加载静态资源。
动态响应生成
支持通过 Ruby 代码动态生成响应内容,例如模拟延迟、随机数据或错误状态码。
示例:模拟网络超时或服务器错误(500)。
请求记录与回放
自动记录所有请求/响应,可保存为 JSON 文件供后续重放(类似 vcr 的功能)。
适合在测试中复现真实场景,或调试难以复现的请求。
浏览器兼容性
支持主流浏览器驱动(如 Selenium、Poltergeist、Appium),适用于完整的端到端测试。
可与 rack-proxy 或 puma-dev 集成,覆盖开发环境。
与测试框架无缝集成
原生支持 RSpec、Minitest,提供简洁的 DSL(如 stub_request、pass_through)。
支持 Capybara.register_driver 快速配置浏览器驱动。
典型使用场景
API 模拟
测试前端与后端的交互,无需启动真实后端服务。
示例:模拟用户登录接口,返回预设的 token。
静态资源隔离
拦截 CDN 请求,返回本地开发的 JS/CSS 文件,避免依赖第三方服务。
示例:测试不同版本的 React 组件。
错误场景模拟
强制返回 404、503 等状态码,验证前端容错能力。
示例:测试网络中断时的重试逻辑。
性能测试
模拟慢速响应(如 3G 网络),评估页面