ruby-on-rails - 如何使用 stub_request 模拟对站点的所有请求?
问题描述
我想在我的 rspec 测试中使用 stub_reuest 模拟对给定站点的所有请求……而不仅仅是我今天知道的 URL。特别是,我想引发异常或超时来模拟 REST 服务脱机或损坏。
如何匹配一个站点的所有 URL?如何阻止给定主机的任何 URL?
解决方案
用于:any
匹配所有方法,使用正则表达式匹配所有 URL:
their_site = 'http://rest.example.com'
stub_request(:any, /#{their_site}.*/ ).to_raise(Errno::ECONNREFUSED)
或者
their_site = 'https://rest.example.com:443/api'
stub_request(:any, %r[#{their_site}.*] ).to_timeout
或者
stub_request(:any, %r[#{their_site}.*] )
.to_return(status: 500, body: 'Sorry, mate.')
或者
stub_request(:any, %r[#{their_site}.*] )
.to_return(status: 404)
或者
stub_request(:any, %r[#{their_site}.*] )
.to_return(status: 200, 'We tried our best.')
如果你想打破所有外部命中,你可以用正则表达式来做到这一点:
stub_request(:any, /.*/ ).to_timeout
推荐阅读
- python - Python:如何将 Pandas Dataframe 行值转换为单个列?
- arrays - Kotlin 中的十六进制字符串到 ByteArray
- windows - 向 Get-ADUser 提交属性时出现错误?保存到 CSV 文件 (Powershell)
- machine-learning - 如何评价 DBSCAN 聚类算法形成的聚类?
- mysql - 使用默认字符集创建仅整数表,坏主意?
- python - imageCollection().filterBounds() 未显示几何输入的结果
- ruby-on-rails - Rails + Nginx + activestorage + 大文件直接上传
- python - 将数据导出到 CSV Pandas - 外来字符问题
- batch-file - 为什么这个 cd 命令不能在批处理文件中工作?
- postgresql - PGJWT 签名函数调用返回 null