0

FakeWeb (cucumber/rails) を使用して、ジオコーディング リクエストのモックを作成しようとしています。すべての 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 テキストには少なくとも 2 つのオクテットが含まれている必要があります!」というエラーが表示されます。(MultiJson::DecodeError) 返される情報がわかりません。そして、FakeWeb がどのように json データを返すことができるか..誰かがサーバー要求を Google マップ API にスタブ化するための解決策を持っていますか?

4

1 に答える 1

2

この"A JSON text must at least contain two octets!"エラーは、応答のスタブに使用している JSON 文字列が無効であることを示しています。MultiJson.decode(json_string)スタブする前に、json 文字列で実行してみてください。エラーを特定するのに役立ちます。

Google マップ API のスタブの詳細に対処したくない場合は、VCRの使用を検討することをお勧めします。実際の応答を記録し、それを使用して、後続のテスト実行で要求をスタブ化します。これは、テストで現実的なスタブ応答を取得するためのはるかに簡単な方法です。

于 2011-11-06T23:39:58.957 に答える