Rails, Cucumber, Capybara, Selenium, Pow, домены, субдомены и javascript

TL:DR - Как я могу заставить Cucumber запрашивать страницу через приложение, но при этом делать вид, что запрос пришел с "http://mysubdomain.mydomain.dev", и запускать javascript правильно?

Хорошо, это может занять некоторое время, чтобы объяснить, но, пожалуйста, потерпите меня...

Я «относительно» опытный разработчик Rails, но только недавно окунулся в полный BDD/TDD.

На странице, которую я тестирую в огурце, есть javascript для создания нового вложенного объекта (очень похоже на этот RailsCast).

Теперь проблема заключается в том, что у меня есть не только переменные поддомены, но и переменные домены(просто поверьте мне в этом...)

Так что приложению нужно запросить request.host, чтобы найти current_domainи current_subdomain, прежде чем все свяжется в фоновом режиме, и он сможет продолжать обслуживать нужные биты приложения .

Мне удалось успешно пройти все тесты, используя хост ! domainи Capybara.default_host = domainв фоновых шагах.

Однако, когда я использую тег @javascript для функции, которая тестирует страницу с .js на ней, я получаю, что Firefox захватывает фокус, а затем пытается загрузить полный URL-адрес.

Также случается, что я запускаю Pow, и эти URL-адреса подключены к серверу разработки.Неудивительно, что они не работают, поскольку, когда пользователь пытается войти в систему, он ищет в БД разработчиков. Я попытался запустить пакет после отключения pow-сервера, и время ожидания истекло.

Конечно, веб-драйвер javascript не должен на самом деле получать доступ к URL-адресу, а просто запускать само приложение и притворяться, что хост — это то, что я ему говорю???

Я явно что-то здесь упускаю. Как заставить Cucumber построить страницу внутри, но при этом сделать вид, что запрос пришел с «http://mysubdomain.mydomain.dev»?

редактировать:Джейсон - трюк с переменным доменом достигается точно так же, как и поддомены... Если вы можете запросить базу данных для учетной записи на основе request.subdomains.first, вы можете запросить домен через request.domain. Вам просто нужно перепроверить несколько вещей, таких как использование заглавных букв и т. д., чтобы свести к минимуму риск неправильно сформированного URL-адреса, и, очевидно, вам нужно сначала убедиться, что запись домена существует в БД...

О, и кешировать запросы записи домена с осторожностью...

Это означает, что вы можете обслуживать одно и то же приложение, но с другим стилем, целевыми страницами и т. д. Полезно для приложений PaaS с широкой клиентской базой — вы можете переименовать его и продавать как конкретное решение проблем одной группы, даже если внутри это одни и те же кишки.

5
задан Jules Copeland 22 May 2012 в 10:51
поделиться