Symfony PhpUnit для симуляции встроенного метода PHP - PullRequest
0 голосов
/ 03 ноября 2018

Я использую метод prophesize, чтобы высмеивать Класс

Пример:

$user = $this->prophesize(User::class);

Как смоделировать встроенный метод PHP?

точно мне надо издеваться locale_accept_from_http($language);

У вас есть идеи, как с этим справиться?

1 Ответ

0 голосов
/ 04 ноября 2018

Вы не издеваетесь над нативным методом 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

...