Symfony 如何在KernelTestCase期间将用户注入TokenStorage

Symfony 如何在KernelTestCase期间将用户注入TokenStorage,symfony,symfony4,Symfony,Symfony4,我的一个事件侦听器使用TokenStorageInterface访问当前用户 在我的内核测试用例(notWebTestCase)期间,也会调用此事件侦听器,但现在没有用户登录 如何在测试中手动注入用户 这不起作用: class MyTest extends KernelTestCase { /** @var User */ private $u; // loaded in setup() public function testSimple() {

我的一个事件侦听器使用
TokenStorageInterface
访问当前用户

在我的内核测试用例(notWebTestCase)期间,也会调用此事件侦听器,但现在没有用户登录

如何在测试中手动注入用户

这不起作用:

class MyTest extends KernelTestCase
{
    /** @var User */
    private $u; // loaded in setup() 

    public function testSimple()
    {
        $tokenStorage = static::$container->get(TokenStorageInterface::class);

        $token = new UsernamePasswordToken($this->u->getUsername(),null, 'main', ['ROLE_ADMIN']);
        self::$kernel->getContainer()->get('session')->set('_security_main', serialize($token)); // does not work
        $tokenStorage->setToken('', $token); // does not work as well
    }
}

我的坏,我的解决方案是好的,我只是导入了错误的TokenStorageInterface。下面是一个完整的工作示例:

use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;

class MyTest extends KernelTestCase
{
    /** @var User */
    private $u; // loaded in setup() 

    public function testSimple()
    {
        $tokenStorage = static::$container->get(TokenStorageInterface::class);
        $token = new UsernamePasswordToken($this->u, null, 'main', ['ROLE_ADMIN']);
        $tokenStorage->setToken($token); 
    }
}