我有一个〜2.5GB的VCR卡带https://github.com/vcr/vcr。我正在使用3.0.1版。

我需要不时重新录制磁带。但是,由于运行测试所花的时间比仅发出请求并将答案记录在盒式磁带中要长得多,因此我正在寻找一种方法,仅发出已经记录的请求并重新记录它们。

理想情况下,我会有一个可以完成此任务的瑞克任务,例如:

rake vcr:cassettes:refresh


我应该怎么做?

最佳答案

我要提出的建议不适用于所有可能的设置(例如,那些将每个连接包装在VCR.use_cassette中或将VCR中间件与Faraday结合使用的设置)。但是,如果您碰巧使用configure_rspec_metadata!设置了VCR,则如下所示:

https://www.relishapp.com/vcr/vcr/v/3-0-1/docs/test-frameworks/usage-with-rspec-metadata

...换句话说,如果每个需要VCR的示例或示例组都具有:vcrvcr: true作为元数据,则可以使用以下命令在命令行上仅运行VCR标记的规范:

$ rspec ./spec --tag @vcr


--tag选项记录在here中。

如果您没有使用元数据设置,并且没有什么阻止您使用它,那么切换到它可能会比想出其他方法来过滤规格要快得多,前提是它们已完全混合在一起。这也使添加新的VCR规格更加方便。一种可能的缺点是,盒式录音带的名称可能需要更改,但是由于您打算重新记录它们,所以这没什么大不了的。

关于ruby-on-rails - 是否可以在不运行测试套件的情况下重新录制VCR卡带?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37441248/

10-09 17:49