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 с широкой клиентской базой — вы можете переименовать его и продавать как конкретное решение проблем одной группы, даже если внутри это одни и те же кишки.