Symfony PhpUnit 模拟 PHP 内置方法
Symfony PhpUnit to mock PHP built-in method
我正在使用 prophesize
方法来模拟 Class
示例:
$user = $this->prophesize(User::class);
如何模拟PHP内置方法?
我确实需要模拟 locale_accept_from_http($language);
你知道如何处理这个吗?
您不模拟 PHP 的本机方法,而是为您需要的一切编写一个包装器。
class LocaleListener
{
protected $language;
public function __construct($language) {
$this->language = $language;
}
public function getPreferredLocale() {
return locale_accept_from_http($this->language);
}
}
现在你可以模拟它:
$listener = $this->prophesize(LocaleListener::class);
$listener->getPreferredLocale()->willReturn('en_GB');
如果您对 Symfony 建议处理来自 header 的用户语言环境的方式感兴趣,请查看他们的演示应用程序中的 EventListener:
https://github.com/symfony/demo/blob/master/src/EventSubscriber/RedirectToPreferredLocaleSubscriber.php
我正在使用 prophesize
方法来模拟 Class
示例:
$user = $this->prophesize(User::class);
如何模拟PHP内置方法?
我确实需要模拟 locale_accept_from_http($language);
你知道如何处理这个吗?
您不模拟 PHP 的本机方法,而是为您需要的一切编写一个包装器。
class LocaleListener
{
protected $language;
public function __construct($language) {
$this->language = $language;
}
public function getPreferredLocale() {
return locale_accept_from_http($this->language);
}
}
现在你可以模拟它:
$listener = $this->prophesize(LocaleListener::class);
$listener->getPreferredLocale()->willReturn('en_GB');
如果您对 Symfony 建议处理来自 header 的用户语言环境的方式感兴趣,请查看他们的演示应用程序中的 EventListener: https://github.com/symfony/demo/blob/master/src/EventSubscriber/RedirectToPreferredLocaleSubscriber.php