Как я могу заглушить или смоделировать метод request.subdomains в Rails?

StackOverflow https://stackoverflow.com/questions/1004832

Вопрос

Я пытаюсь написать несколько функциональных тестов в моем приложении 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:)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top