在我的测试中找出google maps api的请求

时间:2011-11-06 13:47:46

标签: ruby-on-rails ruby google-maps-api-3 fakeweb

我尝试使用FakeWeb(在cucumber / rails中)模拟地理编码请求。 当我阻止所有http请求时,我收到消息:

Real HTTP connections are disabled. Unregistered request: GET 
http://maps.google.com/maps/api/geocode/json?..... (FakeWeb::NetConnectNotAllowedError)

所以我通过尝试注册了网址:

FakeWeb.register_uri(:any, %r|http://maps\.google\.com/maps/|, :json 
=> { 
    "status": "OK", 
....} 

我收到错误“JSON文本必须至少包含两个八位字节!” (MultiJson :: DecodeError) 我不确定要返回什么信息。以及FakeWeb如何返回json数据.. 有人有解决方案将服务器请求存根到谷歌地图api?

1 个答案:

答案 0 :(得分:2)

"A JSON text must at least contain two octets!"错误表示您用于存根响应的JSON字符串无效。尝试使用json字符串运行MultiJson.decode(json_string),然后使用它;这应该可以帮助您查明错误。

如果您不想处理存储谷歌地图API的详细信息,您可能需要考虑使用VCR;它将为您记录一个真实的响应,并使用它在后续测试运行中存根请求。这是在测试中获得逼真的存根响应的一种更简单的方法。