Остановите запрос на API Google Maps в моих тестах

Я пытаюсь смоделировать запрос геокодирования с помощью 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. Есть ли у кого-нибудь решение для заглушения запросов сервера к API карт Google?

1 ответ

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

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

Другие вопросы по тегам