Entrada

Leyendo el body binario de un cassette VCR

Leyendo el body binario de un cassette VCR

Trabajar con VCR es genial hasta que grabás una response que vino con Content-Encoding: gzip y abrís el YAML para encontrar bytes incomprensibles. El snippet a continuación carga el cassette e imprime el 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

Si el body está gzipeado, complementá con:

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

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

Referencia que usé: gist de lapointexavier.

Por qué es útil

Los cassettes ilegibles ocultan bugs. Cuando el test falla con “expected X, got nothing”, abrir el cassette y ver el JSON real suele ahorrar 20 minutos de adivinanzas.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.