Rails ActiveRecord зависимость вводит не-db атрибут - PullRequest
0 голосов
/ 22 мая 2018

У меня есть модель 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

Возможно, я выбрал неправильный подход.Будем очень благодарны за любые предложения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...