поддомен, тестирование с использованием огурца или капибары и rspec - PullRequest
4 голосов
/ 07 сентября 2011

Некоторая часть разработки моего проекта уже выполнена. Наш Компания просит меня написать тестовые сценарии для разработанного кода. и для дальнейшего развития также. Файл маршрутов имеет два поддоменов для admin и hosts.evise также используется.

Теперь я установил огурец и написал первый сценарий для первая история, когда незарегистрированный пользователь попадает на домашнюю страницу, вводит действительный адрес электронной почты и перенаправляется на следующую страницу .. страница не имеет поле пароля.

Scenario: Non registered user lands on beta home page. 
Given: I am on the homepage 
When: I enter valid email with "bahubalian...@gmail.com". 
Then: I should be redirected to request invitation page. 

Проблема в моем файле маршрутов,

constraints :subdomain => ADMIN_SUBDOMAIN do 
  .... 
  root :to => admin#index 
end 
constraints :subdomain => HOST do 
  ... 
  root :to => home#index. 
end 

Теперь, как мне указать файл path.rb для поиска корневого пути в этот конкретный поддомен. Нет никакого root_path, записанного вне ограничений поддоменов. Это мой первый раз с тестированием. Я действительно застрял на этом. Любая помощь очень ценится.

Я только что узнал от кого-то, что это может быть реализовано с использованием капибары. Если это так, не могли бы вы немного рассказать об этом.

1 Ответ

6 голосов
/ 13 сентября 2011

Оказалось, что это было довольно просто. Capybara предоставляет метод default_host. Так что мне просто нужно упомянуть,

When I visit subomain sub

А потом веб-шаг


Given /^I visit subdomain (.*)$/ do |site_domain|

  site_domain = "http://sub.example.com" if site_domain == "admin"

  Capybara.default_host = site_domain
  visit "/"
end

Обновление:

default_host не должен использоваться, так как он не упоминается в документации. Вместо этого попробуйте использовать абсолютный путь в посещении.

Given /^I visit subdomain (.*)$/ do |site_domain|

  site_domain = "http://sub.example.com" if site_domain == "admin"
  visit site_domain
end
...