0

我尝试使用 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 数据.. 有人有解决方案将服务器请求存根到 google maps api 吗?

4

1 回答 1

2

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

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

于 2011-11-06T23:39:58.957 回答