在 Zend Framework 应用程序上使用 PHPUnit,如何强制将语言环境用于给定测试?
我正在使用 phpunit 测试一个多语言网站。我想要执行的测试之一是应用程序将检测用户的区域设置并自动重定向。
即用户访问/上的站点。该应用程序检测到它们来自法国并重定向到 /fr-FR/
该应用程序似乎确实执行了此操作,但尝试为此编写单元测试似乎是不可能的。为了测试的目的,我需要伪造语言环境。有人可以建议吗?
I am testing a multi-lingual site with phpunit. One of the tests I want to perform is that the application will detect the locale of the user and automatically redirect.
That is, user accesses the site on /. The application detects they're from France and redirects to /fr-FR/
The application does appear to do this, but trying to write a unit test for this seems impossible. I need to forge the locale for the purpose of the test. Can anyone advise?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
解决方案是使代码本身更易于测试。
在我的测试中,我有:
现在在我的应用程序中我使用:
设置区域设置。 findLocale 首先检查 Zend_Registry 中的条目。
The solution has been to make the code itself more testable.
In my test I have:
And now in my app I use:
To set the locale. As findLocale checks the Zend_Registry for an entry first.
它可能正在查看 Accept-Language 标头浏览器发送。您可以使用
$_SERVER['HTTP_ACCEPT_LANGUAGE']
在 PHP 中访问它。它是全局的,因此在您的测试设置中,您可以更改其值:It's probably looking at the Accept-Language header that the browser sends. You can access this in PHP using
$_SERVER['HTTP_ACCEPT_LANGUAGE']
. It's a global, so in your test setup, you could change its value: