我们最近开始在我们的黄瓜测试中使用VCR存根请求。我们使用黄瓜表来描述不同类型的请求,并将它们作为变量存储在小黄瓜中。我们的磁带文件都经过重新设计以包含erb,因此我们可以替换我们要测试的请求的值。
问题在于,每当有新请求时,VCR都会记录新请求,并且还会从磁带中覆盖(删除)所有erb,将其替换为针对该示例插入的请求。每当我们运行值已更改的请求(例如,我们从我们正在讨论的API接收的时间戳的值)时,所有erb都需要被复制回盒式磁带文件。这很令人沮丧,因为测试一直在运行。
有人知道为什么VCR会在录制新的回复时剥掉erb吗?任何解决方法的想法?有没有办法在插入模板之前保存模板?
答案 0 :(得分:4)
使用新录制的磁带自动将手动更改合并到磁带上是一个难题,在我看来,最好留给专门设计用于处理文本文档历史并管理合并它们的工具(即您的来源)控制系统)。 ERB使其变得更加困难:虽然您可能只是使用ERB来插入变量,但可以使用任何有效的ruby。 ERB中可能存在循环,条件等。 VCR无法自动合并这些内容。
一些建议:
:once
记录模式(最近默认设置)以防止覆盖现有磁带。<PASSWORD>
的字符串来代替密码。 VCR在录制磁带时会自动插入占位符文本,并在播放时将其替换为正确的实际值。如果这些东西不能满足您的需求,我当然愿意接受如何改进录像机的想法。