Как мне проверить поведение, если запрос занимает слишком много времени с помощью rspec?
Я подумываю использовать поток для имитации этого:
describe "Test" do
it "should timeout if the request takes too long" do
lambda {
thread1 = Thread.new { #net::http request to google.com }
thread2 = Thread.new { sleep(xx seconds) }
thread1.join
thread2.join
}.should raise_error
end
end
Я хочу убедиться, что после того, как запрос был сделан впервые, другой поток «включился», который в данном случае является просто спящим на xx секунд. Тогда я должен ожидать, что запрос истечет по таймауту, потому что выполнение занимает слишком много времени
. Я думаю, что есть более эффективные способы сделать это. Учитывая тот факт, что запрашиваемый URL-адрес не имеет значения. Я просто хочу проверить, действительно ли произойдет тайм-аут, если выполнение займет слишком много времени.
Могу ли я использовать stub (), expect () или какие-либо функции rspec для имитации этого?
Есть ли способ передать «блок» в метод-заглушку
http_request_to_google.stub(:connection).executethisblock(sleep for xx seconds)
.and_throw error ?
. Любая помощь приветствуется