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.