在Zend Framework应用程序上使用PHPUnit,如何强制将语言环境用于给定的测试?

时间:2010-09-22 16:58:04

标签: zend-framework phpunit zend-locale

我正在使用phpunit测试一个多语言网站。我想要执行的其中一个测试是应用程序将检测用户的区域设置并自动重定向。

即,用户访问/上的站点。该应用程序检测到它们来自法国并重定向到/ fr-FR /

应用程序似乎确实这样做了,但是尝试为此编写单元测试似乎是不可能的。为了测试的目的,我需要伪造语言环境。有人可以建议吗?

2 个答案:

答案 0 :(得分:4)

解决方案是使代码本身更易于测试。

在我的测试中,我有:

    $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的条目。

答案 1 :(得分:2)

它可能正在查看浏览器发送的Accept-Language标头。您可以使用$_SERVER['HTTP_ACCEPT_LANGUAGE']在PHP中访问它。它是全局的,因此在您的测试设置中,您可以更改其值:

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