Тест Cucumber / webrat завершается неудачей после добавления Subdomain-fu и функции перенаправления - PullRequest
0 голосов
/ 24 декабря 2009

Я добавил Subdomain-fu в свой проект. В ApplicationController у меня есть before_filter, который проверяет URL и перенаправляет app.com на www.app.com, www.subdomain.app.com на subdomain.app.com и проверяет существование аккаунта (перенаправляет на дом, если не существует):

    before_filter :check_uri 

    def check_uri
      if !subdomain?
        redirect_to http_protocol + "www." + current_host + request.request_uri if !/^www\./.match(current_host)
      elsif /^www\./.match(current_host)
        redirect_to http_protocol + current_host.gsub(/^www\./, '') + request.request_uri
      elsif !account_subdomain?
        redirect_to http_protocol + "www" + current_host.gsub(account_subdomain, '')
      end
    end

Код выше работает довольно хорошо. Но после добавления этого фрагмента мои тесты на огурец, например. вот этот:

  Scenario: Successful sign up
    Given I am an anonymous user
    And an Accept Language header
    And I am on the home page
    When I follow "Join now!"
    And ...

стал сбой с ошибкой:

Webrat::NotFoundError: Could not find link with text or title or id "Join now!"
(eval):2:in `/^I follow "([^\"]*)"$/'
features/manage_users.feature:10:in `When I follow "Join now!"'

Если я прокомментирую это before_filter, все будет хорошо. Кто-нибудь знает почему?

1 Ответ

0 голосов
/ 28 декабря 2009

Я мог бы понять, что Вебрат очень любит домен "example.com" и эмулирует все шаги с ним.

Так что, если вы не используете поддоменов, вы можете написать в своих шагах:

Before do
  host! "example.com"
end

и все ваши перенаправления должны работать (я не проверяю). С поддоменом-фу это даже сложнее. Все, что вам нужно сделать - правильно настроить конфигурационный файл subdomain-fu:

SubdomainFu.tld_sizes = {:development => 0,
                         :test => 1, # not 0, even if you use *.localhost in development
                         :production => 1}

и тесты с перенаправлением работают без хоста ! "Example.com" .

...