Как заглушить HTTParty-запрос внутри метода для тестирования? - PullRequest
0 голосов
/ 27 декабря 2018

Я создал функцию, которая делает HTTP-запрос на получение HTTP.Это вызывает пользовательское сообщение об ошибке, которое мне нужно проверить.Я пытался заглушить запрос с помощью Webmock в тесте, но он вызывает <Net::OpenTimeout>.Как я могу заглушить запрос на получение, если URL создается динамически?

def function(a , b)
# some logic , dynamic url constructed
response = HTTParty.get(url, headers: {"Content-Type" => 
 "application/json"})
if response.code != 200
  raise CustomError.new <<~EOF
    Error while fetching job details.
    Response code: #{response.code}
    Response body: #{response.body}
  EOF
end
JSON.parse(response.body)

для теста

def test_function
WebMock.stub_request(:get, url).with(:headers => {'Content- 
  Type'=>'application/json'}).to_return(:status => 500)
# HTTParty.stub(get: fake_response)
err = assert_raises CustumError do
   c.function(a , b)
end

1 Ответ

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

WebMock позволяет вам использовать «сопоставление с подстановочными знаками», чтобы вы могли запросы заглушки, соответствующие регулярному выражению :

WebMock.stub_request(:get, /example/).to_return(status: 500)
...