Как подделать поиск поддоменов в тестах Rails? - PullRequest
6 голосов
/ 28 ноября 2009

У меня определен следующий фильтр:

# 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.

Что я делаю не так?

1 Ответ

4 голосов
/ 04 января 2011

Попробуйте это:

@request.env['HTTP_HOST'] = 'test.myapp.local'
...