Как макетировать все запросы к сайту с помощью stub_request? - PullRequest
0 голосов
/ 10 декабря 2018

Я хочу смоделировать все запросы к данному сайту в моих тестах rspec с stub_reuest ... не только URL-адреса, которые я знаю сегодня.В частности, я хочу вызвать исключение или тайм-аут для имитации того, что служба REST отключена или не работает.

Как мне сопоставить все URL-адреса только для одного сайта?Как заблокировать любой URL для данного хоста?

1 Ответ

0 голосов
/ 10 декабря 2018

Используйте :any для сопоставления всех методов и регулярное выражение для сопоставления всех URL:

their_site = 'http://rest.example.com'
stub_request(:any, /#{their_site}.*/ ).to_raise(Errno::ECONNREFUSED)

или

their_site = 'https://rest.example.com:443/api'
stub_request(:any, %r[#{their_site}.*] ).to_timeout

или

stub_request(:any, %r[#{their_site}.*] )
  .to_return(status: 500, body: 'Sorry, mate.')

или

stub_request(:any, %r[#{their_site}.*] )
  .to_return(status: 404)

или

stub_request(:any, %r[#{their_site}.*] )
  .to_return(status: 200, 'We tried our best.')

Если вы хотите разбить все внешние попадания, вы можете сделать это с помощью регулярного выражения:

stub_request(:any, /.*/ ).to_timeout
...