Я использую метод prophesize, чтобы высмеивать Класс
prophesize
Пример:
$user = $this->prophesize(User::class);
Как смоделировать встроенный метод PHP?
точно мне надо издеваться locale_accept_from_http($language);
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 предлагает обрабатывать языковые стандарты пользователей из заголовка, проверьте этот EventListener в их демонстрационном приложении: https://github.com/symfony/demo/blob/master/src/EventSubscriber/RedirectToPreferredLocaleSubscriber.php