加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何阻止VCR覆盖磁带中的erb

发布时间:2020-12-17 02:29:28 所属栏目:百科 来源:网络整理
导读:我们最近开始在我们的黄瓜测试中使用 VCR来存根请求.我们使用黄瓜表来描述不同类型的请求,并将它们作为变量存储在小黄瓜中.我们的磁带文件都经过重新设计以包含erb,因此我们可以替换我们要测试的请求的值. 问题在于,只要有新请求,VCR就会记录新请求,并且还会
我们最近开始在我们的黄瓜测试中使用 VCR来存根请求.我们使用黄瓜表来描述不同类型的请求,并将它们作为变量存储在小黄瓜中.我们的磁带文件都经过重新设计以包含erb,因此我们可以替换我们要测试的请求的值.

问题在于,只要有新请求,VCR就会记录新请求,并且还会从磁带中覆盖(删除)所有erb,将其替换为针对该示例插入的请求.每当我们运行值已更改的请求(例如,我们从我们正在讨论的API接收的时间戳的值)时,所有erb都需要被复制回盒式磁带文件.这是令人沮丧的,因为测试一直在运行.

有谁知道为什么VCR会在录制新的回复时剥掉erb?任何解决方法的想法?有没有办法在插入模板之前保存模板?

解决方法

使用新录制的磁带自动将手动更改合并到磁带上是一个难题,在我看来,最好留给专门设计用于处理文本文档历史并管理合并它们的工具(即您的源控制系统) . ERB使其变得更加困难:虽然您可能只是使用ERB来插入变量,但可以使用任何有效的ruby. ERB中可能存在循环,条件等. VCR无法自动合并这些内容.

一对建议:

>以更精细的方式使用您的磁带,这样它们就不会经常被覆盖.我倾向于为每个HTTP请求或HTTP请求的逻辑组使用一个casette.
>使用:一次记录模式(最近的默认值)以防止现有磁带被覆盖.
>看一下VCR的sensitive data filtering功能.这远不如ERB灵活(即你不能使用循环,条件或任何任意ruby代码),但对于简单的变量插值,它确实非常,非常好.它不使用ERB,而是使用占位符字符串 – 您可以使用类似< PASSWORD>的字符串.例如,取代密码.录像机在录制录像带时自动插入占位符文本,并在播放时将其替换为正确的实际值.
>如果这不符合您的需要,before_record and before_playback hooks应该为您提供在录制磁带时进行自动插值(甚至ERB片段插入)所需的所有功能.这基本上就是过滤的工作方式 – 见here.

如果这些东西不能满足您的需求,我当然愿意接受如何改进VCR的想法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读