Как заглушить HTTParty-запрос внутри метода для тестирования?
Я создал функцию, которая делает HTTP-запрос на получение HTTP. Это вызывает пользовательское сообщение об ошибке, которое мне нужно проверить. Я пытался заглушить запрос с помощью Webmock в тесте, но это поднимает <Net::OpenTimeout>
, Как я могу заглушить запрос get, если 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 ответ
WebMock позволяет вам использовать "сопоставление с подстановочными знаками", чтобы вы могли заглушить запросы, соответствующие регулярному выражению:
WebMock.stub_request(:get, /example/).to_return(status: 500)