как мне проверить (rspec) HTTP-запрос, который занимает слишком много времени?

Как мне проверить поведение, если запрос занимает слишком много времени с помощью 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 ?

. Любая помощь приветствуется

5
задан Hubro 6 November 2017 в 05:16
поделиться