0

我正在使用prophesize方法来模拟类

例子:

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

如何模拟 PHP 内置方法?

正是我需要嘲笑locale_accept_from_http($language);

你知道如何处理这个吗?

4

1 回答 1

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

于 2018-11-03T21:21:17.817 回答