Как я могу заглушить или смоделировать метод request.subdomains в Rails?
-
05-07-2019 - |
Вопрос
Я пытаюсь написать несколько функциональных тестов в моем приложении rails, и в application_controller.rb у меня есть это:
before_filter :current_account
def current_account
@current_account ||= Account.find_by_subdomain!(request.subdomians.first)
end
При выполнении тестов request.subdomains
не содержит правильных поддоменов, которые я ищу, и делает невозможным выполнение каких-либо функциональных тестов.
Можно ли заглушить метод current_account
или смоделировать объект request.subdomains
?
Решение
В своем функциональном тесте вы должны уметь (используя мокко):
@request.expects(:subdomains).returns(['www'])
Другие советы
Для меня (и с Rails 2.3.4) правильное утверждение:
@controller.request.expects(:subdomains).returns(['www'])
, поскольку я не могу получить доступ к @request напрямую. Р>
@controller.instance_variable_set(:@request, OpenStruct.new({:subdomains => 'www'}))
вы можете получить доступ ко всему в ruby:)
Не связан с StackOverflow