У меня есть модель ActiveRecord с закрытым методом, который выполняет внешний HTTP-вызов.Этот метод вызывается публичным методом.В целях тестирования я хотел бы заглушить HTTP-клиента, который делает запрос, и по этой причине хотел бы иметь возможность внедрить HTTP-клиента и установить его в качестве атрибута класса ActiveRecord.Как я могу это сделать?Или, может быть, есть лучший способ сделать то, что я пытаюсь достичь?
Пример того, чего я хотел бы достичь:
# in my models:
class Model < ActiveRecord::Base
def public_facing_method
...
res = make_external_call
...
end
private
def make_external_call
@client.post(...) # client is injected on init (HTTParty in my case)
end
end
# in my tests:
class ModelTest < ActiveSupport::TestCase
test "Model#public_facing_method should work"
stub_client = MyStubHTTPClient
# is below possible? + would it work in all cases? (ie: when fetching from db)
instance = Model.new(..., stub_client)
instance.public_facing_method
...
end
end
Возможно, я выбрал неправильный подход.Будем очень благодарны за любые предложения!