Функциональное тестирование абсолютных ссылок - PullRequest
1 голос
/ 09 марта 2011

Когда я запускаю функциональные тесты в Symfony, мои абсолютные ссылки не отображаются так, как они бы выглядели даже в «реальной» тестовой среде. Например, ссылка, которую я выводил так:

echo url_for("@homepage", true);

будет отображаться как http://localhost/index.php/, тогда как если я на самом деле захожу на тестовый сайт в своем браузере, он будет отображаться как http://example.com.localhost/frontend_test.php/

Теперь, я предполагаю, что это происходит, потому что тестовая среда ничего не знает о настройке моего локального виртуального сервера и т. Д., Поэтому у нее нет способа узнать, каким должен быть ее «реальный» абсолютный URL.

Но это делает мои тесты более сложными и менее "реальными". Выполнение моих тестов путем сопоставления с какой-то странной ссылкой, которая на самом деле не сработала бы, если бы я нажал на нее, кажется немного неправильным.

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

http://example.com/

вместо

http://localhost/index.php

Как люди обычно справляются с этим? Могу ли я «указать» тестируемому браузеру, где должны быть основаны его абсолютные URL-адреса, с точки зрения имени хоста и контроллера, включая удаление «index.php», и таким образом получить более реалистичные URL-адреса из тестовой среды?

(Эти URL создаются для канала Atom и в электронных письмах, поэтому мне нужно, чтобы они были абсолютными. Относительные ссылки работают нормально.)

1 Ответ

2 голосов
/ 09 марта 2011

На мой взгляд, ваш сайт должен работать с ЛЮБЫМ доменом.Тестирование на имя хоста связывает тесты с ним.

Я думаю, что вам нужно проверить, является ли ссылка абсолютной или нет (это легко сделать с помощью регулярного выражения).

Я вряд ли смогу найти необходимость в тестировании определенного домена (если вы не используете несколько доменов; в таком случае домены должны быть в любом случае настраиваемыми).1009 *

В действительности вы можете изменить имя хоста, передав первый параметр конструктору браузера:

$test = new sfTestFunctional(new sfBrowser('mydomain.com'));

Я никогда не пробовал.

...