Заглушка повторного вызова метода для проверки граблей
Для своего проекта я использую тест 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})