在phpunit测试上重写symfony令牌身份验证器

在phpunit测试上重写symfony令牌身份验证器,php,symfony,security,phpunit,symfony5,Php,Symfony,Security,Phpunit,Symfony5,如前所述,我通过扩展AbstractGuardAuthenticator类创建了一个自定义令牌身份验证类。我的要求是接受一个jwt,提取它,并通过对照数据库检查它的id来识别用户,该数据库工作完全正常 现在我需要重写它的底层方法,以便在php单元测试中使用。简单地说,绕过它并设置默认用户。因此,在每次进行功能测试时,我可以在不传递用户令牌的情况下测试API端点 我尝试的 我试图在测试文件夹中定义一个单独的security.yaml并调用自定义类,使用它来覆盖,但应用程序仍然调用默认类 路径:co

如前所述,我通过扩展AbstractGuardAuthenticator类创建了一个自定义令牌身份验证类。我的要求是接受一个jwt,提取它,并通过对照数据库检查它的id来识别用户,该数据库工作完全正常

现在我需要重写它的底层方法,以便在php单元测试中使用。简单地说,绕过它并设置默认用户。因此,在每次进行功能测试时,我可以在不传递用户令牌的情况下测试API端点

我尝试的

我试图在测试文件夹中定义一个单独的security.yaml并调用自定义类,使用它来覆盖,但应用程序仍然调用默认类

路径:config/packages/test/security.yaml

到目前为止,我找到的唯一解决方案是保留一个匹配的jwt,并在每个测试中将其作为头值传递


Symfony版本-5/Php版本-7.4

您不需要重写验证器

你可以找到解决办法

我在我的项目中使用了它,我不需要在每个请求中传递令牌

security:

  firewalls:

    main:
      anonymous: lazy
      logout: ~

      guard:
        authenticators:
          - Otrium\Infrastructure\Security\TestTokenAuthenticator
        entry_point: Otrium\Infrastructure\Security\TestTokenAuthenticator

      stateless: true