Заглушка повторного вызова метода для проверки граблей

Для своего проекта я использую тест rake для тестирования моих библиотек. Например, у меня есть метод, как 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')}

Какой будет заглушка connectionответ, но в случае этого метода он заглушает только первый вызов, а затем пытается сделать реальный запрос к моей службе, и поэтому я получаю сообщение об ошибке (тайм-аут, потому что служба фактически не работает в это время).

Есть ли способ заглушить все возможные вызовы connectionклассовые методы?

1 ответ

Решение

Итак, я узнал.

Я должен был использовать заглушки для подделки внутри запросов, как это:

connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})
Другие вопросы по тегам