Post

Lendo o body binário de um cassete VCR

Lendo o body binário de um cassete VCR

Trabalhar com VCR é ótimo até você gravar uma response que veio com Content-Encoding: gzip e abrir o YAML pra ver bytes incompreensíveis. O snippet abaixo carrega o cassete e imprime o body como string.

1
2
3
4
5
6
7
require 'yaml'

path = 'spec/vcr_cassettes/cassette.yml'
deserialized = YAML.load_file(path)
body_string = deserialized['http_interactions'][0]['response']['body']['string']

puts body_string

Se o body estiver gzipado, complemente com:

1
2
3
4
5
require 'zlib'
require 'stringio'

decoded = Zlib::GzipReader.new(StringIO.new(body_string)).read
puts decoded

Referência que eu usei: gist do lapointexavier.

Por que é útil

Cassetes ilegíveis mascaram bugs. Quando o teste falha com “expected X, got nothing”, abrir o cassete e enxergar o JSON real costuma economizar 20 minutos de chute.

Esta postagem está licenciada sob CC BY 4.0 pelo autor.