次のようなコードがあります。
while response.droplet.status != env["user_droplet_desired_state"] do
sleep 2
response = ocean.droplet.show env["droplet_id"]
say ".", nil, false
end
サーバーが特定の状態になるまで待機するようにアプリを設定できるという考えです(たとえば、再起動してから、再びアクティブになるまで監視します)
ただし、テストで webmock を使用しているため、2 回目に別の応答を返す方法がわかりません。
たとえば、次のようなコードです。
stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
to_return(:status => 200, :body => fixture('show_droplet_inactive'), :headers => {})
stub_request(:get, "https://api.digitalocean.com/v2/droplets/6918990?per_page=200").
with(:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Authorization'=>'Bearer foo', 'Content-Type'=>'application/json', 'User-Agent'=>'Faraday v0.9.2'}).
to_return(:status => 200, :body => fixture('show_droplet'), :headers => {})
「最初は非アクティブとしてマークして、ループが1回通過し、その後アクティブとしてマークする」という考えで
ドキュメントによると、スタブは「最後に見つかったものが機能する」ように行われます。
リクエストに一致する最後に宣言されたスタブが常に適用されます。
stub_request(:get, "www.example.com").to_return(:body => "abc")
stub_request(:get, "www.example.com").to_return(:body => "def")
Net::HTTP.get('www.example.com', '/') # ====> "def"
Webmock で異なる結果を持つ同じエンドポイントへの複数の呼び出しをモデル化することは可能ですか?