Остановите запрос на 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, вы можете рассмотреть возможность использования видеомагнитофона; он запишет реальный ответ для вас и использует его, чтобы заглушить запрос при последующих тестовых прогонах. Это гораздо более простой способ получить реалистичные ответы в ваших тестах.