如何编辑VCR gem返回的响应体?

时间:2014-02-20 21:43:38

标签: ruby-on-rails vcr

我正在使用VCR记录我正在整合的其他系统的响应。

但是,这个响应获得了一个巨大的JSON,VCR正在以二进制格式保存它:

body:
  encoding: ASCII-8BIT
  string: !binary |-
    eyJsaXN0IjpbXSwiZmFjZXRzIjpbeyJuYW1lIjoiU2FsZXNDaGFubmVsTmFt
    ZSIsInR5cGUiOi...

有没有办法只能将响应主体保存为JSON?

我想这样做来编辑返回的JSON,以便为我的测试制作其他场景,

由于

3 个答案:

答案 0 :(得分:23)

来自Cleyton提供的google forum link(如果我有代表,我会发表评论),spec_helper.rb中的以下更改对我有用:

VCR.configure do |c|
  c.before_record do |i|
    i.response.body.force_encoding('UTF-8')
  end
end

答案 1 :(得分:3)

在录像机google forum中,我被告知要自己做一个序列化器,以便获得一个漂亮的json回归。

所以,我发现了code。通过一些小的修改,它解决了我的问题,格式化响应体不被编码为二进制。

答案 2 :(得分:0)

在配置中使用decode_compressed_response

VCR.configure do |c|
  c.cassette_library_dir = 'cassettes'
  c.hook_into :webmock
  c.default_cassette_options = { :decode_compressed_response => true } 
end