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.
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”
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
Pingback: Quando o FakeWeb deu um grande susto pt 2: o changelog | Planeta Globo.com