Вопрос

For my project I use rake test for testing my libs. For example, I've got a method, like 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)

So, first I make an HTTP request to my service, then I get the response (batch_id), loop until the batch is finished, then make another request and return the response.

Usually, in specs I do

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

Which will stub connection's response, but in the case of this method it stubs only the first call and then tries to make a real request to my service and so I get an error (timeout because the service is actually down at that time).

Is there any way to stub every possible call of connection's class methods?

Это было полезно?

Решение

So i found out.

I should have used stubs to fake inside requests like this:

connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top