Используя PHPUnit в приложении Zend Framework, как я могу заставить локаль использоваться для данного теста? - PullRequest
3 голосов
/ 22 сентября 2010

Я тестирую многоязычный сайт с phpunit.Один из тестов, которые я хочу выполнить, заключается в том, что приложение обнаружит языковой стандарт пользователя и автоматически перенаправит его.

То есть пользователь получает доступ к сайту в /.Приложение обнаруживает, что они из Франции, и перенаправляет на / fr-FR /

Приложение, похоже, делает это, но попытка написать для этого модульный тест кажется невозможной.Мне нужно подделать локаль для целей теста.Кто-нибудь может посоветовать?

Ответы [ 2 ]

4 голосов
/ 23 сентября 2010

Решение состояло в том, чтобы сделать сам код более тестируемым.

В моем тесте у меня есть:

    $locale = new Zend_Locale();

    $locale->setLocale('fr_FR');
    Zend_Registry::set('Zend_Locale', $locale); 

И теперь в моем приложении я использую:

    $locale = Zend_Locale::findLocale(); 
    $locale = new Zend_Locale($locale);

Чтобы установить язык.Так как findLocale сначала проверяет Zend_Registry на наличие записи.

2 голосов
/ 22 сентября 2010

Вероятно, он просматривает заголовок Accept-Language , который отправляет браузер. Вы можете получить доступ к этому в PHP, используя $_SERVER['HTTP_ACCEPT_LANGUAGE']. Это глобальное значение, поэтому в настройках теста вы можете изменить его значение:

$_SERVER['HTTP_ACCEPT_LANGUAGE'] = "en";
...