Как подделать поиск поддоменов в тестах Rails?
-
06-07-2019 - |
Вопрос
У меня определен следующий фильтр:
# application_controller.rb
class ApplicationController < ActionController::Base
before_filter :find_account
private
def find_account
@current_account = Account.find_by_subdomain!(request.subdomains.first)
end
end
и в моем тесте:
# users_controller_test.rb
class UsersControllerTest < ActionController::TestCase
setup do
@request.host = "test.myapp.local"
end
# ...
end
Теперь test
определяется как поддомен для фиктивной учетной записи, которую я загружаю до всех запросов с использованием factory_girl
. Однако это приводит к ошибке объекта nil, говоря, что @request равен nil. Удаление блока настройки приводит к сбою всех моих тестов, так как find_account не может найти учетную запись и, следовательно, выдает ошибку RecordNotFound
. Р>
Что я делаю не так?
Решение
Попробуйте это:
@request.env['HTTP_HOST'] = 'test.myapp.local'
Не связан с StackOverflow