我正在使用 prophesize
方法来模拟Class
示例:
$user = $this->prophesize(User::class);
如何模拟PHP内置方法?
我确实需要模拟locale_accept_from_http($language);
您知道如何处理吗?
答案 0 :(得分:2)
您没有嘲笑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建议从标头中处理用户区域设置的方式感兴趣,请在其演示应用程序中检出此EventListener: https://github.com/symfony/demo/blob/master/src/EventSubscriber/RedirectToPreferredLocaleSubscriber.php