Могу ли я изменить агент пользователя HTTP при написании тестов браузера?


Мой модуль обладает некоторыми специальными функциями, основанными на агенте пользователя запроса. Я хочу написать тесты для этой функциональности на основе BrowserTestBase D8, но, похоже, изменить строку агента пользователя невозможно.

Метод prepareRequest BrowserTestBase устанавливает для агента пользователя значение drupal_generate_test_ua($this->databasePrefix).

Для теста я попытался изменить это значение на что-то другое, и это нарушает тесты.

Теперь я понимаю, что, похоже, есть некоторая встроенная функциональность в ядро на основе этого значения, которое возвращает drupal_generate_test_ua, и по всему ядру проводятся проверки, чтобы определить, работает ли Drupal в рамках теста или нет.

Есть ли обходной путь или какая-либо надежда на написание тестов с помощью пользовательского агента пользователя?

 2
Author: Brian, 2016-10-18

1 answers

Нет, ты не можешь.

Browsertestbase, как и другие тесты, поддерживающие веб-запросы, использует агент пользователя, чтобы определить, в какой тестовой среде вы находитесь (может быть несколько параллельных тестов). Изменение агента пользователя приведет к тому, что ваш запрос будет отправлен на основной сайт.

Единственный обходной путь, который я вижу, - это отправить другой заголовок (если это действительно возможно через API, не уверен). В вашем случае вы могли бы вместо этого посмотреть на этот заголовок. Это не идеально, и это требует от вас написания специального кода для тестов, но я не вижу другого способа, если вы действительно полагаетесь на пользовательский агент.

 1
Author: Berdir, 2016-10-23 11:29:27