Symfony 5.1 到 5.2 单元测试不通过 guard 身份验证器进行身份验证

Symfony 5.1 to 5.2 unit testing do not authenticate via guard authenticator

我正在使用 Symfony 5.1 使用防火墙和保护验证器;

        secured_area:
        pattern:  ^/
        stateless: true
        provider: chain_provider
        guard:
            authenticators:
                - App\<pathToAuthenticator>
            entry_point: App\<pathToAuthenticator>

5.1 一切正常。 我最近升级到 Symfony 5.2,除了单元测试,几乎所有的工作都很好。 当我逐步调试时,它不再像以前(5.1 中)那样进入 Authenticator

我的配置中缺少任何参数吗?默认参数有变化吗?

最终,我在测试中找到了 pb 和解决方案:

self::$_client->request(
    'GET',
    '/items',
    array(),
    array(),
    array('HTTP_Accept' => 'application/json', 'CONTENT_TYPE' => 'application/json'),
    json_encode($payload)
);

我有一个请求匹配器可以过滤 JSON 请求:

class JsonRequestMatcher implements RequestMatcherInterface
{
    public function matches(Request $request)
    {
        $format = $request->getPreferredFormat();
        return $format === "json";
    }
}

由于我尚未确定的原因,当 header 发送 'HTTP_Accept' $format 请求匹配器中的值为“html " 并且请求未被处理......然后它进一步崩溃。

当我将 'HTTP_Accept' 更改为 'HTTP_ACCEPT' 时,(是的,header 只是大写!)它起作用了,$format[= 的值22=] 是预期的(即:“json”)。 感谢 Cerad 的支持和一些我不知道 Symfony 中存在的命令 ;-)