Остановите запрос на API Google Maps в моих тестах - PullRequest
0 голосов
/ 06 ноября 2011

Я пытаюсь смоделировать запрос геокодирования с помощью FakeWeb (в огурце / рельсах). Когда я блокирую все запросы http, я получаю сообщение:

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

Итак, я зарегистрировал URL, попробовав:

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

Я получаю сообщение об ошибке "Текст JSON должен содержать как минимум два октета!" (MultiJson :: DecodeError) Я не уверен, какую информацию вернуть. И как FakeWeb может возвращать данные JSON .. У кого-нибудь есть решение для заглушения запросов к серверу Google Maps API?

1 Ответ

2 голосов
/ 07 ноября 2011

Ошибка "A JSON text must at least contain two octets!" указывает, что строка JSON, используемая для заглушки ответа, недопустима.Попробуйте запустить MultiJson.decode(json_string) со своей строкой json, прежде чем заглушить ее;это должно помочь вам точно определить ошибку.

Если вы не хотите разбираться с подробностями о заглушке API карт Google, вам может понадобиться использовать VCR ;он запишет реальный ответ для вас и использует его, чтобы заглушить запрос при последующих тестовых прогонах.Это гораздо более простой способ получить реалистичные ответы в ваших тестах.

...