Symfony PhpUnit для симуляции встроенного метода PHP
Я использую prophesize
метод издеваться над классом
Пример:
$partnerMembers = $this->prophesize(PartnerMembers::class);
Как издеваться над PHP встроенным методом?
именно мне нужно издеваться locale_accept_from_http($language);
У вас есть идея, как справиться с этим?
1 ответ
Решение
Вы не издеваетесь над нативным методом 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