У моего приложения rails 3 должен быть поддомен для работы, мой тест контроллера rspec не проходит - PullRequest
1 голос
/ 17 мая 2011

Я использую lvh.me:3000, который перенаправляет на localhost и позволяет мне иметь подстановочные знаки, такие как:

test.lvh.me: 3000

В моем application_controller я проверяю, есть ли субдомен в URL, и также ищу субдомен в базе данных.

Если субдомена нет, я перенаправляю на страницу с ошибкой.

Из-за этого мои тесты контроллера rspec не выполняются, потому что у тестов нет поддоменов.

Как я могу сделать get 'index' вызовы, чтобы использовать поддомен, который, как я знаю, существует в тестовой базе данных?

1 Ответ

4 голосов
/ 19 мая 2011

Чтобы обойти это, я делаю следующее:

# spec/support/spec_helper_methods.rb
def require_subdomain
  @subdomain = # however you establish subdomains in you app
  controller.expects(:current_subdomain).returns(@subdomain)
  @request.host = "#{@subdomain}.test.host"
end

и затем в своих спецификациях:

describe UsersController do

  describe "GET /users/new" do

    before do
      require_subdomain
    end

  end

end

Примечание. Я использую здесь мокко, поэтому expects()и returns() методов.

В моем контроллере я спрашиваю current_subdomain() и поднимаю 404, если его нет

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