Comportamento estranho do FakeWeb versões antigas

Ontem fomos surpreendidos por este comportamento estranho do FakeWeb (versões 1.2.2 e 1.2.3), de uma hora para a outra o corpo das requisições vinham como “” (vazio).

irb(main):001:0> require 'rubygems'
=> true
irb(main):002:0> require 'fakeweb'
=> true
irb(main):003:0> FakeWeb.register_uri(:get, 'http://google.com', :body
=> 'google')
=> [#<FakeWeb::Responder:0xb78290a8 @uri="http://google.com",
@options={:body=>"google"}, @method=:get, @times=1>]
irb(main):004:0> HTTParty.get('http://google.com')
=> nil
irb(main):005:0> x = HTTParty.get('http://google.com')
=> nil
irb(main):006:0> x.code
=> 200
irb(main):007:0> x.body  # deveria vir 'google'
=> ""
irb(main):008:0> Net::HTTP.get(URI.parse("http://google.com"))
=> ""  # mesma coisa... :/

Atualizando para versões mais recentes (como a 1.2.4) o problema acaba. Alguem mais passou por isso?

O FakeWeb é uma excelente ferramenta para testes reais onde dependemos da resposta de outros servidores. Ao inves de estabelecer uma comunicação real, que pode trazer outros tipos de problema de dificil detecção, simulamos a resposta para ver se o sistema se comporta de acordo com o esperado.

Sabe quando vc tem que testar se de 1, N, 0 elementos ou 404, essas coisas, e nem sempre vc pode forçar estas situações por ser complicado demais? Nesse ponto o FakeWeb é A ferramenta certa.

Rating 4.00 out of 5
[?]

Tags: ,

2 comentários para “Comportamento estranho do FakeWeb versões antigas”

  1. O problema está no seu registro do fakeweb. Não é pra usar :body, e sim :string. Veja:

    >> FakeWeb.register_uri(:get, ‘http://google.com’, :body => ‘google’)

    => [#"google"}, @times=1, @uri="http://google.com">]

    >> HTTParty.get(’http://google.com’)

    => nil

    >> FakeWeb.register_uri(:get, ‘http://google.com’, :string => ‘google’)

    => [#"google"}, @times=1, @uri="http://google.com">]

    >> HTTParty.get(’http://google.com’)

    => “google”

  2. admin disse:

    Exatamente, escrevi um post depois quando descobri isso, houve uma confusão nas formas de invocar o register_uri. É claro que é um bom exemplo de como devemos pensar bem na interface e na sua evolução pois esse tipo de coisa quebra retrocompatibilidade.

    Vamos lembrar de olhar o Changelog, galera :)

Deixe um comentário