我尝试使用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?
答案 0 :(得分:2)
"A JSON text must at least contain two octets!"
错误表示您用于存根响应的JSON字符串无效。尝试使用json字符串运行MultiJson.decode(json_string)
,然后使用它;这应该可以帮助您查明错误。
如果您不想处理存储谷歌地图API的详细信息,您可能需要考虑使用VCR;它将为您记录一个真实的响应,并使用它在后续测试运行中存根请求。这是在测试中获得逼真的存根响应的一种更简单的方法。