0

私のプロジェクトでは、rake test を使用してライブラリをテストしています。たとえば、次のようなメソッドがありますconnection.users.add_users(options)

json_response = check_users(options) 
batch = nil
Timeout::timeout(30) do
  begin
    sleep 1            
    batch = connection.batches.find(json_response["batch_id"])
  end while batch.state !="completed"
end
connection.users.add_users(batch.target_id, options)

そのため、最初にサービスに対して HTTP 要求を行い、次に応答 (batch_id) を取得し、バッチが終了するまでループしてから、別の要求を行い、応答を返します。

通常、仕様では私はそうします

let(:connection){setup_test_connection('{"batch_id": 344235}', '202')}

これは stubconnectionの応答ですが、このメソッドの場合、最初の呼び出しのみをスタブしてから、サービスに実際のリクエストを送信しようとするため、エラーが発生します (その時点でサービスが実際にダウンしているためタイムアウト)。

connectionのクラス メソッドのすべての可能な呼び出しをスタブする方法はありますか?

4

1 に答える 1

0

それで分かった。

スタブを使用して、次のような内部リクエストを偽造する必要がありました。

connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})
于 2012-07-02T12:48:07.447 に答える