18

我正在使用 VCR 记录来自我正在集成的其他系统的响应。

但是,这个响应得到一个巨大的 JSON,VCR 将它保存为二进制格式:

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

有没有一种方法可以只将响应正文保存为 JSON?

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

谢谢

4

3 回答 3

29

从克莱顿提供的谷歌论坛链接(如果我有代表,我会发表评论),以下更改spec_helper.rb对我有用:

VCR.configure do |c|
  c.before_record do |i|
    i.response.body.force_encoding('UTF-8')
  end
end
于 2014-08-29T15:50:40.283 回答
4

查看 VCR谷歌论坛,有人告诉我做自己的序列化程序以获得漂亮的 json 返回。

所以,我找到了这段代码。通过一些小的修改,它解决了我的问题,将响应正文格式化为不编码为二进制。

于 2014-02-24T18:24:02.160 回答
3

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
于 2018-12-21T09:22:43.563 回答